import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class BeanChangeUtil<T> {
public static <T> void main(String[] args) {
User u1 = new User("1", true, "a");
User u2 = new User("2", false, "b");
BeanChangeUtil<T> t = new BeanChangeUtil<>();
String str = t.contrastObj(u1, u2);
if (str.equals("")) {
System.out.println("未有改變");
} else {
System.out.println(str);
}
}
@SuppressWarnings({ "unchecked", "rawtypes" })
public String contrastObj(Object oldBean, Object newBean) {
StringBuilder str = new StringBuilder();
T pojo1 = (T) oldBean;
T pojo2 = (T) newBean;
try {
// 通過反射獲取類的類類型及字段屬性
Class clazz = pojo1.getClass();
Field[] fields = clazz.getDeclaredFields();
int i = 1;
for (Field field : fields) {
// 排除序列化屬性
if ("serialVersionUID".equals(field.getName())) {
continue;
}
PropertyDescriptor pd = new PropertyDescriptor(field.getName(), clazz);
// 獲取對應屬性值
Method getMethod = pd.getReadMethod();
Object o1 = getMethod.invoke(pojo1);
Object o2 = getMethod.invoke(pojo2);
if (o1 == null || o2 == null) {
continue;
}
if (!o1.toString().equals(o2.toString())) {
str.append(i + "、字段名稱:" + field.getName() + ",舊值:" + o1 + ",新值:" + o2 + ";");
i++;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return str.toString();
}
static class User {
private String about;
private boolean lock;
private String name;
public User() {
}
public User(String about, boolean lock, String name) {
super();
this.about = about;
this.lock = lock;
this.name = name;
}
/*省略get如输、set方法*/
}
}
java利用反射獲取對象前后修改的內(nèi)容(用于日志記錄)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門对竣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來庇楞,“玉大人,你說我怎么就攤上這事否纬÷郎危” “怎么了?”我有些...
- 文/不壞的土叔 我叫張陵临燃,是天一觀的道長睛驳。 經(jīng)常有香客問我,道長膜廊,這世上最難降的妖魔是什么乏沸? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮爪瓜,結(jié)果婚禮上蹬跃,老公的妹妹穿的比我還像新娘。我一直安慰自己钥勋,他們只是感情好炬转,可當我...
- 文/花漫 我一把揭開白布算灸。 她就那樣靜靜地躺著扼劈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪菲驴。 梳的紋絲不亂的頭發(fā)上荐吵,一...
- 文/蒼蘭香墨 我猛地睜開眼谤绳,長吁一口氣:“原來是場噩夢啊……” “哼占锯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起缩筛,我...
- 正文 年R本政府宣布识藤,位于F島的核電站,受9級特大地震影響次伶,放射性物質(zhì)發(fā)生泄漏痴昧。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一冠王、第九天 我趴在偏房一處隱蔽的房頂上張望赶撰。 院中可真熱鬧,春花似錦柱彻、人聲如沸豪娜。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽瘤载。三九已至,卻和暖如春卖擅,著一層夾襖步出監(jiān)牢的瞬間鸣奔,已是汗流浹背。 一陣腳步聲響...