1. 程式人生 > >通過java反射機制,獲取對象的屬性和值(包括所有繼承的父類)

通過java反射機制,獲取對象的屬性和值(包括所有繼承的父類)

原創 getc getname 因此 declared protect 版權 str 來源

java的反射機制提供了兩種方法:

getDeclaredFields() :該方法能獲取到本類的所有屬性,包括private,protected和public,但不能獲取到繼承的父類的屬性。

getFields():既能獲取本類的屬性也能得到父類的屬性,但僅僅能獲取public修飾的字段。

如果用getFields把所有的字段都改為public,那麽修飾符則失去了其存在的意義。

因此可以用getSuperclass()得到父類,進行循環遍歷,從而得到所有的屬性。


Class<?> clazz = bean.getClass();

for (; clazz != Object.class; clazz = clazz.getSuperclass()) {//向上循環 遍歷父類
Field[] field = clazz.getDeclaredFields();
for (Field f : field) {
f.setAccessible(true);
System.out.println("屬性:"+f.getName()+" 值:"+f.get(bean).toString());

}
}
---------------------
作者:xiao鬼
來源:CSDN
原文:https://blog.csdn.net/sinat_28530913/article/details/72301506
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

通過java反射機制,獲取對象的屬性和值(包括所有繼承的父類)