物件反射賦值
阿新 • • 發佈:2018-11-10
在不確定物件欄位及內容的前提下,為物件賦值的解決方案通常是反射賦值
更多精彩
- 更多技術部落格,請移步 asing1elife’s blog
實現方式
// 獲取當前會員物件
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;
}
}