使用Groovy比较两个对象

6

是否有一种便捷的Groovy工具可以给我两个不同对象之间的差异? 我通过equals方法收到消息,它们不相等,但是我在哪里可以找到未匹配的属性?


对象是通过它们的hashCode和equals方法进行匹配,而不是通过属性的详尽比较来进行匹配。 - tim_yates
我理解,但是它们没有告诉你哪个属性不匹配。 - monksy
1个回答

9
我发现这很容易做到,因为该对象的.properties属性会生成一个将属性名称列为键,值列为值的映射。
一旦我得到了那个,我就可以对比两个映射之间的差异,然后我就得到了我要找的答案。
每个对象都有一个.properties扩展名。这类似于Python中的.dict。
示例:
object1.properties - object2.properties

这些将展示出object1属性和object2属性的差异,但仅在存在与object2内不同的实体(key+value)时。如果在object2中有额外的属性,则不会显示。


3
把你的代码作为示例供其他人参考,这个建议怎么样? - cfrick
完成。 - monksy
只要对象可以转换为java.util.LinkedHashMap,就可以使用。一如既往,这取决于您的对象是如何实现的。 - Chen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接