JAVA反射reflect常用方法
Reflect笔记
基础
结构信息
Class c = Class.forname("类的名称");从类的名称创建类对象。class.getName();获得类的名称 会带上包名,例如com.java.test.Appclass.getSimpleName();获得类的简单名称,例如Appclass.getInterfaces();获得类的接口,是一个数组,可以通过Arrays.toString()输出;class.getModifers();获得修饰符,得到一个代表修饰符的数字;- 可以通过
Modifier.toString(数字) 得到字符串,如public final
成员变量
Filed[] f = class.getFileds();获取所有public属性class.getDeclaredFileds()获取所有权限的属性f.getName获得属性名字f.getType获得属性类型
构造方法
class.getConstructors()所有构造方法class.getDeclaredConstructors()所有权限的构造class.getConstructor()指定的构造方法class.getDeclaredConstructor()所有指定构造方法- 通过
constructor.newInstance()构造新对象
成员方法
getMethods()获得所有方法getname();获得名字getModifiers();获得修饰符getReturnTypes();获得返回类型
操作
使用反射操作属性(不安全)
- 获取类的完整路径字符串
- 根据类的完整路径获得类对象
- 使用
set(obj,值)进行对相应属性的修改 f.getXxx(obj)获得obj该属性的值
使用Method执行方法
m.invoke(obj) 具有返回值
invoke 简单点来说,就是将一个方法(method)运用到具体的类上
比如我有一个类Person,中间有属性age
得到Person的getAge方法后
使用f.invoke(person_1,Object[])来对这个具体的对象使用方法

浙公网安备 33010602011771号