如果您知道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 answersimilar question(不是作者选择的那个)是最适合您的解决方案。

基本上,它包括使用名为Unitils的库。

这是用途:

User user1 = new User(1, "John", "Doe");
User user2 = new User(1, "John", "Doe");
assertReflectionEquals(user1, user2);


即使类User没有实现equals(),这也将通过。您可以在它们的tutorial中看到更多示例和一个非常酷的断言,称为assertLenientEquals

10-06 09:42