Heim >Java >javaLernprogramm >Vergleichende und detaillierte Erläuterung zweier Objekteigenschaften in Java

Vergleichende und detaillierte Erläuterung zweier Objekteigenschaften in Java

黄舟
黄舟Original
2018-05-14 13:39:463348Durchsuche

Der folgende Editor bietet Ihnen einen Vergleich basierend auf den Eigenschaften zweier Objekte in Java. Der Herausgeber findet es ziemlich gut, deshalb teile ich es jetzt mit Ihnen und gebe es als Referenz. Folgen wir dem Editor und werfen wir einen Blick darauf.

Es gibt zwei Möglichkeiten, zwei Objekte auf Gleichheit zu vergleichen:

1. Situation 1: Wenn Sie nur feststellen möchten, ob zwei Objekte gleich sind, müssen Sie nur die Methode equal() überschreiben. Hier ist keine Erklärung erforderlich

2. Fall 2: Wenn Sie zusätzlich zu Fall 1 auch wissen müssen, welche Attribute unterschiedlich sind, dann benötigen Sie Um die Klassenreflexion zu verwenden,

Der spezifische Code lautet wie folgt:

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);
}

Das obige ist der detaillierte Inhalt vonVergleichende und detaillierte Erläuterung zweier Objekteigenschaften in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn