public static Map<String, Map<String, String>> compile(Object old_,Object new_) {
Map<String, Map<String, String>> map = new HashMap<String, Map<String, String>>();//存放修改前与修改后的属性值
Class<Object> cOld_ = (Class<Object>) old_.getClass();
Field[] filesDb = cOld_.getDeclaredFields();
Class<Object> cNew_ = (Class<Object>) new_.getClass();
Map<String, String> valDbMap = new HashMap<String, String>();//存放修改前的已修改的值
Map<String, String> valNewMap = new HashMap<String, String>();//存放修改后的值
for (Field field : filesDb) {
String getMethodName = "get"
+ field.getName().substring(0, 1).toUpperCase()
+ field.getName().substring(1);
try {
Method mdb = (Method) cOld_.getMethod(getMethodName);
Method mNew_ = (Method) cNew_.getMethod(getMethodName);
try {
Object valDb = mdb.invoke(old_);
Object valNew = mNew_.invoke(new_);
if (valDb != null) {
if (!valDb.equals(valNew)) {
valDbMap.put(field.getName(), String.valueOf(valDb));
valNewMap.put(field.getName(), String.valueOf(valNew));
}
}
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
} catch (NoSuchMethodException e) {
} catch (SecurityException e) {
e.printStackTrace();
}
}
map.put("更改前", valDbMap);
map.put("更改后", valNewMap);
return map;
}