我想比较两个Java对象而不重写equals方法.因为我需要在我拥有的n个类中重写equals方法,所以我需要一个通用的实用方法,我们可以比较两个Java对象.
像这样的东西:
A a1,a2;
B b1,b2;
C c1,c2;
-----
-----
boolean isEqual1 = new ObjectComparator().isEquals(a1 , a2);
boolean isEqual2 = new ObjectComparator().isEquals(b1 , b2);
boolean isEqual3 = new ObjectComparator().isEquals(c1 , c2);
Run Code Online (Sandbox Code Playgroud)
请帮我写一个用于比较任何Java对象的通用实用程序
希望通过使用Field类和getClass方法来实现它.请指导我.
aio*_*obe 10
EqualsBuilder.reflectionEquals在Apache Commons库中查看一下.
从文档:
此方法使用反射来确定两个对象是否相等.
它用于
AccessibleObject.setAccessible访问私有字段.这意味着如果未正确设置权限,则在安全管理器下运行时将抛出安全性异常.它也没有明确测试那么高效.
因此,在您的示例中,它看起来像:
A a1,a2;
B b1,b2;
C c1,c2;
-----
-----
boolean isEqual1 = EqualsBuilder.reflectionEquals(a1 , a2);
boolean isEqual2 = EqualsBuilder.reflectionEquals(b1 , b2);
boolean isEqual3 = EqualsBuilder.reflectionEquals(c1 , c2);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8839 次 |
| 最近记录: |