/**
* 获取一个类和其父类的所有属性
*
* @param clazz
* @return
*/
public static List 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;
}
/**
* 将对象转Map
* @param obj 待转对象
* @return
*/
public static Map getValueMap(Object obj) {
Map map = new HashMap();
// System.out.println(obj.getClass());
// 获取f对象对应类中的所有属性域
List 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;
}