/**
* 獲取一個類和其父類的全部屬性
*
* @param clazz
* @return
*/
public static List<Field> findAllFieldsOfSelfAndSuperClass(Class clazz) {
Field[] fields = null;
List fieldList = Lists.newArrayList();
while (true) {
if (clazz == null) {
break;
} else {
fields = clazz.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
fieldList.add(fields[i]);
}
clazz = clazz.getSuperclass();
}
}
return fieldList;
}.net
/**
* 將對象轉Map
* @param obj 待轉對象
* @return
*/
public static Map<String, Object> getValueMap(Object obj) {
Map<String, Object> map = new HashMap<String, Object>();
// System.out.println(obj.getClass());
// 獲取f對象對應類中的全部屬性域
List<Field> list=findAllFieldsOfSelfAndSuperClass(obj.getClass());
for (Field field : list) {
String varName = field.getName();
try {
// 獲取原來的訪問控制權限
boolean accessFlag = field.isAccessible();
// 修改訪問控制權限
field.setAccessible(true);
// 獲取在對象f中屬性fields[i]對應的對象中的變量
Object o = field.get(obj);
if (o != null)
map.put(varName, o);
// System.out.println("傳入的對象中包含一個以下的變量:" + varName + " = " + o);
// 恢復訪問控制權限
field.setAccessible(accessFlag);
} catch (IllegalArgumentException ex) {
ex.printStackTrace();
} catch (IllegalAccessException ex) {
ex.printStackTrace();
}
}
return map;
} 對象