利用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
}
}