Heim >Java >javaLernprogramm >Vergleichende und detaillierte Erläuterung zweier Objekteigenschaften in Java
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!