兩個對象進行比較相等,有兩種做法:
1、情況一:當僅僅只是判斷兩個對象是否相等時,只需重寫equals()方法即可。這里就不用說明
2、情況二:當除了情況一之外,還需知道是那個屬性不同,那么就需要采用類反射,
具體代碼如下:
public static void main(String[] args) {A a = new A();a.setUserName("a");a.setPassword("p");a.setQq("q");a.setWechat("w");
A b = new A(); b.setUserName("a"); b.setPassword("p"); b.setQq("q"); b.setWechat("ww"); //只是比較兩個對象是否相等,那么直接重寫equals方法 System.out.println( a.equals(b)); try { Map<String, String> maps = compare( a, b ); System.out.println(); } catch (Exception e) { e.printStackTrace(); }}public static <T> Map<String, String> compare(T obj1, T Obj2) throws Exception { Map<String, String> result = new HashMap<String, String>(); Field[] fs = obj1.getClass().getDeclaredFields(); for (Field f : fs) { f.setAccessible(true); Object v1 = f.get(obj1); Object v2 = f.get(Obj2); if( ! equals(v1, v2) ){ result.put(f.getName(), String.valueOf(equals(v1, v2))); } } return result;}public static boolean equals(Object obj1, Object obj2) { if (obj1 == obj2) { return true; } if (obj1 == null || obj2 == null) { return false; } return obj1.equals(obj2);}
以上這篇基于java中兩個對象屬性的比較就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VeVb武林網。
新聞熱點
疑難解答
圖片精選