反射机制的概述和字节码对象的获取,通过反射获取构造方法并使用;通过反射获取成员变量并使用;通过反射获取私有成员变量并使用;通过反射获取成员方法并使用
1反射机制的概述和字节码对象的获取方式:
在运行时,我们可以获取任意一个类的所有方法和属性
在运行时,让我们调用任意一个对象的所有方法和属性
反射的前提:要获取类的对象(Class对象)字节码对象
第一种:创建对象,对象.getClass();获取
第二种:可以通过类名获取字节码对象:class cla = student.class;
第三种:Static class = forName(String className);通过类的全名获得字节码对象,
Class.forName(“类地址的全名称”);
2通过反射获取构造方法并使用:
获取构造可以创建对象;
字节码对象.getConstructors();获取所有的public修饰的构造方法 返回的是数组
字节码对象.getConstructor();不给参数是获得无参构造
无参构造。newInstance(); ,输出的是成员变量
带参构造。newInstance(给出参数就行);
字节码对象。getDeclaredConstructor(参数的类型1,参数的类型2);获取成员变量带参的构造方法
字节码对象。newInstance();获取构造对象
3通过反射获取成员变量并使用:
Fileld【】 fs = 字节码对象。getFields();获取所有的public修饰的成员变量
Filed fs2 = 字节码对象。getField(String);获取public修饰的成员变量(根据字段的名称获取公共的成员变量对象)
Filed fs3 = 字节码对象。getDeclaredFields();获取所有的成员变量
Filed 的方法:get(对象) 通过对象获取成员变量的值
set(对象,修改的值); 通过成员变量对象,修改为指定的值
4 通过反射获取私有成员变量并使用:
字段对象(私有成员变量).setAccessible(true);//(ture)就是设置反射时取消Java的访问检查,(暴力访问)
5通过反射获取成员方法并使用:
getMethod(类的全名,方法对应的参数名)。没有参数时,方法对应的参数不写就行
Object obj = Invoke(对象,参数名);
还没有评论,来说两句吧...