两个对象进行比较相等,有两种做法:

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);
}

最新文章

  1. 如果mac电脑的usb转接器连接wlan时不显示,也就是不识别usb此时的网络连接没有,解决办法就是如下
  2. VC++ 回调函数及使用方法(转)
  3. d3 API scale
  4. 理解GC日志
  5. linux eclipse epic perl padwalker
  6. 杭电1009-FatMouse&#39; Trade
  7. C# 堆栈的数据结构 (二)
  8. .NET连接SAP系统专题:.NET调用RFC几种方式(一)
  9. NOIP 提高组必会!(转)
  10. CentOS修改Tomcat端口号
  11. AutoFac - 将 autofac 应用于MVC多层项目
  12. request.getParameter和request.setAttribute/request.getAttribute
  13. 老男孩python学习自修第十四天【序列化和json】
  14. Codeforces Round #349 (Div. 1)E. Forensic Examination
  15. 04-模拟String去除空格trim()方法
  16. windows server配置ftp服务器以及外网访问
  17. oracle中实现自增id
  18. 【转载】这样去写你的HTML
  19. guava 对集合的支持
  20. 8.2Solr API使用(Facet查询)

热门文章

  1. echarts在react项目中的使用
  2. 《C# 语言学习笔记》——事件
  3. 为 Editor.md 编辑器插件增加预览和发布按钮
  4. springboot集成activiti6.0多数据源的配置
  5. java - tcp如何保证传输的可靠性和有序性
  6. mysql协议分析1---报文的格式和基本类型
  7. Spring Boot 面试的十个问题
  8. java抽奖思路
  9. codeforces 318 A.Even Odds B.Sereja and Array
  10. go 学习之路(二)