通過java反射機制,獲取物件的屬性和值(包括所有繼承的父類)
阿新 • • 發佈:2018-12-30
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()); } }