小白版---理解反射

小白版—理解反射

  1. 反射理解:利用好反射可以获取任意一类的各个组成部分(构造方法、成员变量、成员方法)

    类的字节码—Class对象

    类的成员变量—Field对象

    类的成员方法—Method对象

    类的构造方法—-Constructor对象

  2. 获取字节码(三种方式)

    1. Class clazz = Class.forName(“全类名”);
    2. Class clazz2 = 对象名.getClass();
    3. Class clazz3= 类名.class
  3. 反射获取Filed对象,并使用

clazz.getField();//获取单个公共的成员变量
clazz.getFields();//获取所有的公共的成员变量
clazz.getDeclaredField();//获取单个包括私有在内的成员变量
clazz.getDeclaredFields();//获取所有的包括私有在内的成员变量
//设置属性值
field对象.set(对象,属性值);
//获取属性值
object value = field对象.get(对象);
//暴力反射:如果一个变量是私有的才需要暴力反射,必须使用在设置和获取之前
field对象.setAccessible(true);
  1. 反射获取Method对象,并使用
clazz.getMethod();//获取单个公共的成员方法
clazz.getMethods();//获取所有的成员方法
clazz.getDeclaredMethod();//获取单个包括私有在内的成员方法
clazz.getDeclaredMethods();//获取所有包括私有在内的成员方法
//调用方法
method对象.invoke(对象,实际参数...);//实际参数根据需要可以不写,也可以写多个
//暴力反射
method对象.setAccessible(true);
  1. 反射获取Constructor对象,并使用
clazz.getConstructor();//获取单个公共的构造方法
clazz.getConstructor();//获取所有的公共的构造方法
clazz.getDeclaredConstructor();//获取单个包括私有在内的构造方法
clazz.getDeclaredConstructor();//获取所有的包括私有在内的所有的构造方法
//使用构造方法创建对象
contructor对象.newInstance();
//暴力反射
contructor对象.setAccessible(true);

tance();
//暴力反射
contructor对象.setAccessible(true);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值