使用Ecoreutil.Copier复制的对象的结果哈希码与原始哈希码不同

时间:2018-05-13 14:37:26

标签: eclipse modeling emf eclipse-emf

我正在使用ECoreUtil.Copier创建EObject的副本。但是,会创建精确副本,但使用不同的哈希码。

为什么哈希码会改变?

1 个答案:

答案 0 :(得分:1)

EObjects的equals方法和hashCode基于对象的 identity EMF specification要求这样做。 equals必须将两个不同的对象视为不同,并且即使它们的成员具有相同的值,它们也应具有不同的哈希码。

使用ECoreUtil.Copier复制对象时,结果是具有新标识的新对象。

如果要比较EObject,以了解它们在结构上是否等效(即使它们是不同的对象),则可以使用EcoreUtils.equals方法。