我正在使用ECoreUtil.Copier
创建EObject
的副本。但是,会创建精确副本,但使用不同的哈希码。
为什么哈希码会改变?
答案 0 :(得分:1)
EObjects的equals
方法和hashCode
基于对象的 identity 。 EMF specification要求这样做。 equals
必须将两个不同的对象视为不同,并且即使它们的成员具有相同的值,它们也应具有不同的哈希码。
使用ECoreUtil.Copier
复制对象时,结果是具有新标识的新对象。
如果要比较EObject,以了解它们在结构上是否等效(即使它们是不同的对象),则可以使用EcoreUtils.equals
方法。