類反射的應用

     利用java的反射機制,可以輕鬆獲取類屬性的key和value,主要通過兩個方法來獲取:getFields()和getDeclaredFields();

通過這兩種方法都可以獲取到屬性名和屬性值,但是兩者之間還是有區別的:

     其中getFields() 只能獲取權限爲public的屬性,包括父類的,而getDeclaredFields()可以獲取public、protected、private的屬性。

可以使用getFields()的特性來屏蔽那些不想被輸出的屬性,通過將之設置爲private或者protected就可以。

例子:

for(T t : targetList) {
    Class clazz = t.getClass();
    Map<String, Object> valueMap = new LinkedHashMap<String, Object>();
    for(Field field : clazz.getFields()) {//getFields只能獲取public的屬性,而getDeclaredFields可以獲取任何權限的屬性
        field.setAccessible(true);
        valueMap.put(field.getName(), field.get(t));//將屬性和屬性名字放入valueMap
    }
}

發佈了9 篇原創文章 · 獲贊 6 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章