利用java怎么对两个对象的属性进行比较?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
两个对象进行比较相等,有两种做法:
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);
}
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。