对象反射赋值

在不确定对象字段及内容的前提下,为对象赋值的解决方案通常是反射赋值

实现方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 获取当前会员对象
Class<MemberDTO> member = (Class<MemberDTO>) super.getMember().getClass();

// 获取所有字段
Field[] fileds = member.getDeclaredFields();

// 遍历字段找到与当前修改字段相符合的字段
for (Field field : fileds) {
	// ** 获取私有字段的操作权限
	field.setAccessible(true);

	if (field.getName().equals(name)) {
		// 找到字段对应 set 方法
		PropertyDescriptor pd = new PropertyDescriptor(field.getName(), member);
		Method method = pd.getWriteMethod();

		// 传入当前对象,并赋值
		method.invoke(super.getMember(), value);

		break;
	}
}