反射机制的定义:
Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类中的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
功能:
1.在运行时判断任意一个对象所属的类。
2.在运行时构造任意一个类的对象。
3.在运行时判断任意一个类所具有的成员变量和方法。
4.在运行时调用任意一个对象的方法。
5.生成动态代理。
与反射机制相关的类:
1.Class——Class类抽象出了java中类的特征并提供了一些方法。
2.Constructor——Constructor抽象出了java中所有的构造函数的特征以及提供一些方法。
3.Method——Java中所有的方法都是Method类型。
4.Field——类的字段为Field类型
关于获取Class对象:
1.Class.forName("全类名")——将字节码文件加载进内存,返回Class对象;
多用于配置文件,将类名定义在配置文件中;读取文件,加载类。
2.类名.class——通过类名的属性class获取;多用于参数的传递。
3.对象.getClass()——getclass()方法在Object类中定义;多用于对象的获取字节码的方式。
1. 获取成员变量
-
Field[ ] getFields() 获取所有public修饰的成员变量
-
Field getField(String name) 获取指定名称public的成员变量
-
Field[ ] getDeclaredFields()获取所有成员变量,不考虑修饰符
-
Field getDeclaredField(String name)获取所有指定名称的成员变量,不考虑修饰符
2. 获取构造方法
-
Constructor<?>[ ] getConstructors() 获取所有public修饰的构造方法
-
Constructor< T> getConstructor(类<?>... parameterTypes) 获取指定名称public的构造方法
-
Constructor<?>[ ] getDeclaredConstructors() 获取所有构造方法,不考虑修饰符
-
Constructo< T>r getDeclaredConstructor(类<?>... parameterTypes) 获取所有指定名称的构造方法,不考虑修饰符
3. 获取成员方法
-
Method[ ] getMethods() 获取所有public修饰的成员方法
-
Method getMethod(String name, 类<?>... parameterTypes) 获取指定名称public的成员方法
-
Method[ ] getMethods() 获取所有成员方法,不考虑修饰符
-
Method getDeclaredMethod(String name, 类<?>... parameterTypes) 获取所有指定名称的成员方法,不考虑修饰符
4. 获取类名
-
String getName()