如果您知道EqualsBuilder from apache commons lang ,那么您可以将其用于反射实现equals方法。它似乎运行良好,但是由于我使用的是第三方软件,因此需要更改其行为。我需要一个通用的比较器来检查所有属性,并且不能假定属性对象具有已实现的equals方法,但是EqualsBuilder会假定它。
详细地说,我想更改public EqualsBuilder append(Object lhs, Object rhs)
,以便也不要为此对象调用EqualsBuilder。类似于isEquals = lhs.equals(rhs)
可以重写该方法,但由于EqualsBuilder创建了自己的对象,因此不会调用该方法。因此,我需要告诉EqualBuilder使用我的RecursiveEquilbuilder对象。
有任何想法吗?
最佳答案
我知道它有些旧,但是希望对您有所帮助。
我遇到了与您相同的问题,我发现此the most voted answer的similar question(不是作者选择的那个)是最适合您的解决方案。
基本上,它包括使用名为Unitils的库。
这是用途:
User user1 = new User(1, "John", "Doe");
User user2 = new User(1, "John", "Doe");
assertReflectionEquals(user1, user2);
即使类
User
没有实现equals()
,这也将通过。您可以在它们的tutorial中看到更多示例和一个非常酷的断言,称为assertLenientEquals
。