1.考慮安全訪問範圍內的屬性,沒有權限訪問到的屬性不讀取
/**
* 根據屬性名獲取屬性值
*
* @param fieldName
* @param object
* @return
*/
private String getFieldValueByFieldName(String fieldName, Object object) {
try {
Field field = object.getClass().getField(fieldName);
//設置對象的訪問權限,保證對private的屬性的訪問
return (String)field.get(object);
} catch (Exception e) {
return null;
}
}
2.不考慮從祖先類繼承的屬性,只獲取當前類屬性,包括四類訪問權限,private,protect,default,public
/**
* 根據屬性名獲取屬性值
*
* @param fieldName
* @param object
* @return
*/
private String getFieldValueByFieldName(String fieldName, Object object) {
try {
Field field = object.getClass().getDeclaredField(fieldName);
//設置對象的訪問權限,保證對private的屬性的訪問
field.setAccessible(true);
return (String)field.get(object);
} catch (Exception e) {
return null;
}
}
3.考慮父類繼承過來的屬性,包括四類訪問權限,private,protect,default,public
/**
* 根據屬性名獲取屬性元素,包括各種安全範圍和所有父類
*
* @param fieldName
* @param object
* @return
*/
private Field getFieldByClasss(String fieldName, Object object) {
Field field = null;
Class<?> clazz = object.getClass();
for (; clazz != Object.class; clazz = clazz.getSuperclass()) {
try {
field = clazz.getDeclaredField(fieldName);
} catch (Exception e) {
// 這裏甚麼都不能拋出去。
// 如果這裏的異常打印或者往外拋,則就不會進入
}
}
return field;
}
————————————————
版權聲明:本文爲CSDN博主「水上冰石」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/jiao_zg/article/details/77897748