- 反射
Java的反射(reflection)机制是指在程序的运行过程中,可以创建任意类的对象, 对于任意一个类,了解类的信息以及属性和方法, 对于任意一个对象,可以调用对象的属性和方法。 这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。 |
- 反射机制相关的类
类加载时,JVM自动生成类的Class类对象。 将类的成员进行拆分,拆分成一个个对象。 | |
类 | 描述 |
Class | 代表类对象 |
Field | 代表属性对象 |
Constructor | 代表构造方法对象 |
Method | 代表方法对象 |
- 创建Class类对象三种方式
Class.forName(“全限定名”); //全限定名:包名+类名 (推荐) 类名.class ; 对象名.getClass(); |
- Class类对象常用的方法
1. 获取类的包名、类名、修饰符....基本信息的方法
方法名 | 描述 |
getPackageName() | 获取包名 |
getName() | 获取全限定名.(包名+类名) |
getSimpleName() | 获取类名 |
getModifiers() | 获取修饰符 |
getSuperclass() | 获取父类 |
getInterfaces() | 获取实现的父接口 |
2. 获取构造方法对象 Constructor
方法名 | 描述 |
getConstructor(类<?>... parameterTypes) | 获取指定的公共的构造方法 |
获取所有的公共的构造方法 | |
getDeclaredConstructor(类<?>... parameterTypes) | 获取指定的构造方法 |
获取所有的构造方法 |
构造方法对象常用的方法
方法名 | 描述 |
getModifiers() | 获取修饰符 |
getName() | 获取构造方法名 |
getParameterCount() | 获取参数个数 |
newInstance() | 创建对象 |
3. 获取属性对象 Field
方法名 | 描述 |
getField(String name) | 获取指定的公共的属性对象 |
getFields() | 获取所有的公共的属性对象 |
getDeclaredField(String name) | 获取指定的属性对象 |
获取所有的属性对象 |
属性对象常用的方法
方法名 | 描述 |
getModifiers() | 获取修饰符 |
getType() | 获取数据类型 |
getName() | 获取属性名 |
set(Object obj ,Object value) | 给指定对象的属性赋值 |
get(Object obj) | 获取指定对象的属性值 |
4. 获取方法对象 Method
方法名 | 描述 |
getMethod(String name, 类<?>... parameterTypes) | 获取指定的公共的方法对象 |
getMethods() | 获取所有的公共的方法对象 |
String name, 类<?>... parameterTypes) | 获取指定的方法对象 |
获取所有的方法对象 |
方法对象常用的方法
方法名 | 描述 |
getModifiers() | 获取修饰符 |
getReturnType() | 获取返回值类型 |
getName() | 获取方法名 |
getParameterCount() | 获取参数个数 |
invoke(Object obj,Object...args) | 调用方法 |
- 私有化成员访问,设置忽略访问修饰符
setAccessible(true); |