How*_*May 14 java reflection comparison serialization equals
我试图通过比较结果对象与原始对象来验证序列化和反序列化例程.例程可以序列化任意和深度嵌套的类,因此我想要一个比较例程,可以给出原始和最终实例,并反过来遍历每个值类型并比较值,并迭代地潜入引用类型以比较值.
我已经尝试了Apache Commons Lang,EqualsBuilder.reflectionEquals(inst1, inst2)但这似乎没有进行非常深入的比较,它只是比较参考类型的平等而不是深入研究它们:
以下代码说明了我的问题.第一次调用reflectionEquals返回true但第二次返回false.
是否有人可以推荐的图书馆例程?
class dummy {
dummy2 nestedClass;
}
class dummy2 {
int intVal;
}
@Test
public void testRefEqu() {
dummy inst1 = new dummy();
inst1.nestedClass = new dummy2();
inst1.nestedClass.intVal = 2;
dummy inst2 = new dummy();
inst2.nestedClass = new dummy2();
inst2.nestedClass.intVal = 2;
boolean isEqual = EqualsBuilder.reflectionEquals(inst1.nestedClass, inst2.nestedClass);
isEqual = EqualsBuilder.reflectionEquals(inst1, inst2);
}
Run Code Online (Sandbox Code Playgroud)
art*_*tol 13
从这个问题的答案/sf/answers/101433601/和一些初步测试,看起来像Unitils' ReflectionAssert.assertReflectionEquals做你期望的.(编辑:但可能会被放弃,所以你可以试试AssertJ https://joel-costigliola.github.io/assertj/assertj-core-features-highlight.html#field-by-field-recursive)
我对EqualsBuilder的这种行为感到非常震惊,所以感谢这个问题.在这个网站上有很多答案推荐它 - 我想知道推荐它的人是否意识到这样做了?
| 归档时间: |
|
| 查看次数: |
18647 次 |
| 最近记录: |