比較兩個物件是否相同,輸出不同的屬性值(一)

KGF886發表於2020-11-25

比較兩個物件是否相同,輸出不同的屬性值

物件:

@Data
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private int level;
    private String name;
}

比較兩個物件,輸出不同的欄位

 		User user1 = new User(1,"wzx");
        User user2 = new User(2,"wjg");
        String oldContent = "舊內容:";
        String newContent = "新內容:";
        Field[] fields1 = user1.getClass().getDeclaredFields();
        Field[] fields2 = user2.getClass().getDeclaredFields();
        for (int i = 0; i <fields1.length ; i++) {
            fields1[i].setAccessible(true);
            fields2[i].setAccessible(true);
            if(!fields1[i].get(user1).equals(fields2[i].get(user2))){
                oldContent+=(fields1[i].getName()+":"+fields2[i].get(user1)+";");
                newContent+=(fields2[i].getName()+":"+fields2[i].get(user2)+";");
            }
        }
        System.out.println(oldContent);
        System.out.println(newContent);

輸出:

舊內容:level:1;name:wzx;
新內容:level:2;name:wjg;

此處只是通過反射獲取物件的欄位和值進行了一個簡單地比較,嚴謹的還要判斷是否為空和將欄位改為漢字最好,這裡只是寫了一個大概思路。

相關文章