编程语言
首页 > 编程语言> > 8.20Java之反射机制的基本概念

8.20Java之反射机制的基本概念

作者:互联网

8.20Java之反射机制的基本概念

编译期和运行期

编译期

概念:

把源码交给编译器编译成计算机可以执行的文件

特点:

运行期

概念:

把编译后的文件交给计算机执行,直到程序运行结束。

特点:

Java的反射机制

特点:

动态获取信息以及动态调用对象方法的功能称为 Java 语言的反射机制。

概括:

反射机制指的是程序在运行时能够获取自身的信息。在 Java 中,只要给定类的名字,就可以通过反射机制来获得类的所有信息。

使用场景:

Java反射机制存储包

Java 反射机制主要提供了以下功能,这些功能都位于java.lang.reflect包。

要想知道一个类的属性和方法,必须先获取到该类的字节码文件对象。获取类的信息时,使用的就是 Class 类中的方法。所以先要获取到每一个字节码文件(.class)对应的 Class 类型的对象.

Java是单根继承机制,所有的类都继承自Object类。在 Object 类中定义了一个 getClass() 方法,该方法返回同一个类型为 Class 的对象。

Class practice = practice.getClass();    // label1为 JLabel 类的对象

利用 Class 类的对象 practice可以访问 practice对象的描述信息、practice类的信息以及基类 Object 的信息。

反射可访问的常用信息

类型访问方法返回值类型说明
包路径 getPackage() Package 对象 获取该类的存放路径
类名称 getName() String 对象 获取该类的名称
继承类 getSuperclass() Class 对象 获取该类继承的类
实现接口 getlnterfaces() Class 型数组 获取该类实现的所有接口
构造方法 getConstructors() Constructor 型数组 获取所有权限为 public 的构造方法
getDeclaredContruectors() Constructor 对象 获取当前对象的所有构造方法  
方法 getMethods() Methods 型数组 获取所有权限为 public 的方法
getDeclaredMethods() Methods 对象 获取当前对象的所有方法  
成员变量 getFields() Field 型数组 获取所有权限为 public 的成员变量
getDeclareFileds() Field 对象 获取当前对象的所有成员变量  
内部类 getClasses() Class 型数组 获取所有权限为 public 的内部类
getDeclaredClasses() Class 型数组 获取所有内部类  
内部类的声明类 getDeclaringClass() Class 对象 如果该类为内部类,则返回它的成员类,否则返回 null

调用 getFields() 和 getMethods() 方法时将会依次获取权限为 public 的字段和变量,然后将包含从超类中继承到的成员变量和方法。而通过 getDeclareFields() 和 getDeclareMethod() 只是获取在本类中定义的成员变量和方法。

反射机制的优缺点

优点:

缺点:

标签:反射,Java,对象,基本概念,获取,8.20,方法,Class
来源: https://www.cnblogs.com/JunkingBoy/p/15177394.html