我正在尝试通过比较生成的对象与原始对象来验证序列化和反序列化程序。这些程序可以序列化任意嵌套类,因此我需要一个比较程序,该程序可以接收原始实例和最终实例,并在反射式地遍历每个值类型并比较值的同时,迭代地深入到引用类型以比较值。
我已经尝试过Apache Commons Lang的
以下代码说明了我的问题。第一次调用
有没有人能推荐一个库程序?
我已经尝试过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);
}
equals
的方法进行深度比较。深度比较似乎是一个很少需要的例外情况,所以您不应该对标准行为感到失望。 - maaartinus