L'éditeur suivant vous apportera une comparaison basée sur les propriétés de deux objets en Java. L'éditeur le trouve plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence pour tout le monde. Suivons l'éditeur et jetons un coup d'œil
Il existe deux façons de comparer deux objets pour l'égalité :
1. Situation 1 : Lorsque vous souhaitez simplement déterminer si deux objets sont égaux, il vous suffit de remplacer la méthode equals(). Il n'est pas nécessaire d'expliquer ici
2. Cas 2 : Lorsqu'en plus du cas 1, vous devez également savoir quels attributs sont différents, alors vous avez besoin pour utiliser la réflexion en classe,
Le code spécifique est le suivant :
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); }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!