通過字段名從對象或對象的父類中得到字段的值

/**
* 通過字段名從對象或對象的父類中得到字段的值(調用字典的get方法)
* @param object 對象實例
* @param fieldName 字段名
* @return 字段對應的值
* @throws Exception
*/
public static Object getValueOfGet(Object object, String fieldName) throws Exception {
if (object == null) {
return null;
}
if (StringUtils.isBlank(fieldName)) {
return null;
}
Field field = null;
Class<?> clazz = object.getClass();
for (; clazz != Object.class; clazz = clazz.getSuperclass()) {
try {
field = clazz.getDeclaredField(fieldName);
field.setAccessible(true);
PropertyDescriptor pd = new PropertyDescriptor(field.getName(), clazz);
//獲得get方法
Method getMethod = pd.getReadMethod();
//執行get方法返回一個Object
return getMethod.invoke(object);
} catch (Exception e) {
//這裏甚麼都不要做!並且這裏的異常必須這樣寫,不能拋出去。
//如果這裏的異常打印或者往外拋,則就不會執行clazz = clazz.getSuperclass(),最後就不會進入到父類中了
}
}
return null;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章