我有两个具有完全相同属性的对象.不要问我为什么,这是生成的代码,我必须处理这个.
class Bean1 {
int id;
}
class Bean2 {
int id;
}
Run Code Online (Sandbox Code Playgroud)
我想比较每个类的对象而不编写每个属性的比较代码.这个线程解释了如何比较两个对象,但在我的情况下,这会失败,因为它们不是同一个类的实例.
此代码返回false:
EqualsBuilder.reflectionEquals(new Bean1(1), new Bean2(1));
Run Code Online (Sandbox Code Playgroud)
有没有其他方法来comapre对象和忽略对象类?
我终于能够使用 Apache Common Lang 的ReflectionToStringBuilder来做到这一点,因为它提供了ToStringStyle.NO_CLASS_NAME_STYLE选项。
此外,当我将它与 JUnit 测试一起使用时,它很有用,因为如果对象不同,我将能够看到哪个字段不同。
Assert.assertEquals(
new ReflectionToStringBuilder(bean1, ToStringStyle.NO_CLASS_NAME_STYLE).toString(),
new ReflectionToStringBuilder(bean2, ToStringStyle.NO_CLASS_NAME_STYLE).toString());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
243 次 |
| 最近记录: |