1. 反射概述.
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
2. 获取字节码文件对象的方式
A. Object类的getClass() 方法
B. 数据类型的静态属性 类名.Class
C. Class类中的静态方法
Publicstatic Class forName(String className);
3. 通过反射获取构造方法
A. 获取多个构造方法
public Constructor[] getConstructors():获取所有公共构造方法
public Constructor[] getDeclaredConstructors():获取所有构造方法
B. 获取单个构造方法
public Constructor<T> getConstructor(Class<?>...parameterTypes)
参数表示的是:你要获取的构造方法的构造参数个数及数据类class字节码文件对象
public T newInstance(Object... initargs)
创建此 Class 对象所表示的类的一个新实例。
4. 通过反射获取成员变量
A. getFields()
返回一个包含某些 Field 对象的数组,这些对象反映此 Class 对象所表示的类或接口的所有可访问公共字段。
B. getDeclaredFields()
返回 Field 对象的一个数组,这些对象反映此 Class 对象所表示的类或接口所声明的所有字段。
C. getField(String name)
返回一个 Field 对象,它反映此 Class 对象所表示的类或接口的指定公共成员字段。
D. getDeclaredField(String name)
返回一个Field 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明字段。
5. 通过反射获取成员方法
A. getMethod(String name, Class<?>... parameterTypes)
返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法。
B. getMethods()
返回一个包含某些 Method 对象的数组,这些对象反映此 Class 对象所表示的类或接口(包括那些由该类或接口声明的以及从超类和超接口继承的那些的类或接口)的公共 member 方法。
C. getDeclaredMethod(String name, Class<?>... parameterTypes)
返回一个 Method 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明方法。
D. getDeclaredMethods()
返回 Method 对象的一个数组,这些对象反映此 Class 对象表示的类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。