反射机制的概述和字节码对象的获取,通过反射获取构造方法并使用;通过反射获取成员变量并使用;通过反射获取私有成员变量并使用;通过反射获取成员方法并使用

Dear 丶 2022-06-06 02:43 323阅读 0赞

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(对象,参数名);

发表评论

表情:
评论列表 (有 0 条评论,323人围观)

还没有评论,来说两句吧...

相关阅读