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,publicjava
- /**
- * 根據屬性名獲取屬性元素,包括各類安全範圍和全部父類
- *
- * @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;
- }