Heim > Java > javaLernprogramm > Hauptteil

Vergleichende und detaillierte Erläuterung zweier Objekteigenschaften in Java

黄舟
Freigeben: 2018-05-14 13:39:46
Original
3346 Leute haben es durchsucht

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");
Nach dem Login kopieren
 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);
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage