基于java中两个对象属性的比较
程序员文章站
2024-03-31 14:55:04
两个对象进行比较相等,有两种做法:
1、情况一:当仅仅只是判断两个对象是否相等时,只需重写equals()方法即可。这里就不用说明
2、情况二:当除了情况一之外,还需知...
两个对象进行比较相等,有两种做法:
1、情况一:当仅仅只是判断两个对象是否相等时,只需重写equals()方法即可。这里就不用说明
2、情况二:当除了情况一之外,还需知道是那个属性不同,那么就需要采用类反射,
具体代码如下:
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中两个对象属性的比较就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。