javaの2つのオブジェクト属性の比較に基づいて


二つのオブジェクトが比較的に等しいというやり方があります。
1、状況1:2つのオブジェクトが等しいかどうかを判断するだけで、equals()メソッドを書き換えるだけでよい。ここでは説明しなくてもいいです。
2、ケース2:ケース1以外に、その属性が違うということを知る必要があります。クラス反射を採用します。
具体的なコードは以下の通りです。

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の中で二つの対象属性の比較に基づいて、小編が皆さんに提供している内容の全部を共有しています。参考にしてもらいたいです。どうぞよろしくお願いします。