【发布时间】:2014-12-05 22:18:41
【问题描述】:
Groovy 是否有一个简单的实用程序可以让我区分两个不同的对象?我通过 equals 方法收到消息,它们不相等,但是我在哪里可以找到哪些属性不匹配?
【问题讨论】:
-
对象通过它们的 hashCode 和 equals 方法匹配,而不是通过属性的详尽比较
-
我知道,但是,他们不会告诉您哪些属性不匹配。
标签: groovy
Groovy 是否有一个简单的实用程序可以让我区分两个不同的对象?我通过 equals 方法收到消息,它们不相等,但是我在哪里可以找到哪些属性不匹配?
【问题讨论】:
标签: groovy
我发现这很容易做到,因为对象的 .properties 属性生成了一个映射,其中列出了属性名称作为键,值作为值。
一旦我有了它,我就可以在两张地图之间做一个区别,我得到了我正在寻找的答案。
每个对象都有一个 .properties 扩展名。这就像 Python .dict 一样工作。
示例
object1.properties - object2.properties
因此,这些将向您展示 object1 属性和 object2 属性之间的区别,但仅限于存在与 object2 内部不同的实体(键+值)的情况。如果 object2 中有额外的属性,则不会显示。
【讨论】: