深度反射比较等于
2022-09-02 13:26:06
我正在尝试通过将生成的对象与原始对象进行比较来验证序列化和反序列化例程。这些例程可以序列化任意和深度嵌套的类,因此我想要一个比较例程,它可以给定原始实例和最终实例,并反射地遍历每个值类型并比较值,并迭代到引用类型以比较值。
我尝试过Apache Commons Lang EqualsBuilder.reflectionEquals(inst1,inst2),
但这似乎并没有做一个非常深入的比较,它只是比较了相等的引用类型,而不是深入研究它们:
下面的代码说明了我的问题。第一个调用返回 true,但第二个调用返回 false。reflectionEquals
有没有任何人都可以推荐的图书馆例程?
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);
}