反射实例配解析

反射就是将java类中的各种成分映射成一个个java对象。例如一些成员变量、方法、构造方法、包等等,利用反射技术能将这些组成元素解刨成一个个独立的对象。

下面是通过className获取到构造方法并重新写入值的几种方式:
“正”:
在这里插入图片描述
反射(一):
在这里插入图片描述
反射(二):
在这里插入图片描述
以上写法结果都是一样的。
第三种反射操作详解如下:
1.通过类名地址或者类对象实例
Class clz = Class.forName(“类名地址”);
2.构造函数对象
Constructor appleConstructor = clz.getConstructor();
3.通过newInstance方法获取反射类对象
Object enObj = appleConstructor.newInstance();
4.在反射对象里获取set方法
Method setUserName = clz.getMethod(“setUserName”, String.class);
5.最后通过invoke方法调用set方法与构造方法对象连接赋值
setUserName .invoke(enObj,“陈静雯”);

反射常用的一些API归纳及自己的理解:
1.首先要获取到Class类,才能将类中已分解的构造方法,函数,成员变量提取出来。
1)在已知全路径的情况下,适用于属性特别多的类,修改其中某个属性值,不方便查找的情景。
Class className = Class.forName(com.neo.drools.domin.selfUser);
2)在已知类名的情况下可以直接使用.class
Class clz = selfUser.class;
3)getClass()
selfUser selfUserObj = new selfUser();
Class clz = selfUserObj.getClass();

2.获取到类对象后需要创建类对象(newInstance())
两种途径,一种是通过Class对象创建,另一种是通过Construtor对象创建
1)Class clz = selfUser.class;
selfUser selfUser= (selfUser)clz.newInstance();
2)Class clz = selfUser.class;
Constructor constructor = clz.getConstructor();
selfUser selfUser = (selfUser)constructor.newInstance();

3.补充:通过 Constructor 对象创建类对象可以选择特定构造方法,而通过 Class 对象则只能使用

默认的无参数构造方法。下面的代码就调用了一个有参数的构造方法进行了类对象的初始化。
Class clz = selfUser.class;
Constructor constructor = clz.getConstructor(String.class, int.class);
Apple apple = (Apple)constructor.newInstance(“红富士”, 15);

4.获取属性名字
Class clz = selfUser.class;
Field[] fields = clz.getDeclaredFields();
for (Field field : fields) {
System.out.println(field.getName());
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值