15、反射

反射
一、理解反射机制
Reflection 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性、方法、构造函数、访问修饰符等信息。例如,使用它能获得 Java 类中各成员的名称并显示出来。在运行时动态加载类等。第三方主流的框架如spring, springMVC, struts, hibernate等内部都大量的使用反射技术。

二、详解及特点
1、JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
2、Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。
3、通过“字符串类名”动态创建类的实例,这种就是通过反射创建实例,而不用通过主动new 的方式创建。

三、获得类的实例
1、获得类的Field实例
a. getFields(); 返回一个包含某些 Field 对象的数组,这些对象反映此 Class 对象所表示的类或接口的所有可访问公共字段。
b. getFields(String name); 返回一个 Field 对象,它反映此 Class 对象所表示的类或接口的指定公共成员字段。
c. getDeclaredFields(); 返回 Field 对象的一个数组,这些对象反映此 Class 对象所表示的类或接口所声明的所有字段。
d. getDeclaredFields(String name); 返回一个 Field 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明字段。

2、获得类的Constructor实例
a. getConstructors(): 返回表示此类公共构造方法的 Constructor 对象数组。
b. getConstructor(Class<?>... parameterTypes): 返回与指定的 parameterTypes 相匹配的公共构造方法的 Constructor 对象。
c. getDeclaredConstructors(): 返回表示此类所有已声明的构造方法的 Constructor 对象的数组。
d. getDeclaredConstructor(Class<?>... parameterTypes):返回带有指定参数列表的已声明的构造方法的 Constructor 对象。

3、获得类的Method实例
a. getMethods():返回表示此类中公共方法的 Method 对象的数组。
b. getMethod(String name, Class<?>... parameterTypes):返回与指定的 name 和 parameterTypes 匹配的 Method 对象。
c. getDeclaredMethods():返回表示此类所有声明方法的 Method 对象的数组。
getDeclaredMethod(String name, Class<?>… parameterTypes):返回该类与指定名和参数相匹配的方法的 Method 对象。

猜你喜欢

转载自blog.csdn.net/weixin_40574657/article/details/89318136
15
今日推荐