1

如果您 从 apache commons lang 了解 EqualsBuilder,您就会知道可以使用它来实现带反射的 equals 方法。它似乎运作良好,但由于我使用的是第三方软件,我需要改变它的行为。我需要一个通用比较器来检查所有属性,并且不能假定属性对象具有实现的 equals 方法,但 EqualsBuilder 假定它。

详细地说,我想改变public EqualsBuilder append(Object lhs, Object rhs),而不是调用isEquals = lhs.equals(rhs)EqualsBuilder 也应该用于这个对象。就像是isEquals = EqualsBuilder.reflectionEquals(lhs, rhs, false);

覆盖该方法是可能的,但它不会被调用,因为 EqualsBuilder 创建了它自己的对象。因此我需要告诉 EqualBuilder 使用我的 RecursiveEquilbuilder 对象。

有任何想法吗?

4

1 回答 1

0

我知道它有点旧,但我希望它有所帮助。

我遇到了和你一样的问题,我发现这个类似问题的投票最多的答案(不是作者选择的那个)是最适合你的解决方案。

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

这是用途:

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

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

于 2014-12-17T17:02:47.777 回答