深度递归对象比较(再次)
SO上有两个类似的问题:
但是,有趣的是,他们都没有对这个问题给出完全正确的答案。
我和其他问题的作者真正想要的是某个库中的某种方法,它只会判断给定的两个对象是否相等:
boolean deepEquals(Object obj1, Object obj2)
即不抛出任何异常等。
apache
的不是解决方案,因为它没有深入的比较。EqualsBuilder
Unitils
似乎也是一个糟糕的决定,因为它的方法不返回或;如果比较失败,它只会引发异常。当然,它可以这样使用:true
false
Difference difference = ReflectionComparatorFactory.createRefectionComparator(new ReflectionComparatorMode[]{ReflectionComparatorMode.LENIENT_ORDER, ReflectionComparatorMode.IGNORE_DEFAULTS}).getDifference(oldObject, newObject);
但它似乎非常丑陋,并且库似乎完全太重,无法满足所需的比较目的。unitils
此外,我自己创建这样的库非常清楚,但是不太可能没有常用的库包含这样的已经实现的方法。有什么想法吗?deepEquals