我正在使用ECoreUtil.Copier
来创建我的EObject
的副本。但是,将创建确切的副本,但使用不同的哈希代码。
为什么哈希码会改变?
EObjects 的equals
方法和hashCode
基于对象的标识。这是 EMF 规范所要求的。两个不同的对象必须被equals
认为是不同的,并且也应该有不同的哈希码,即使它们的成员具有相同的值。
当您复制带有ECoreUtil.Copier
的对象时,结果是具有新标识的新对象。
如果你想比较EObjects以确定它们在结构上是否等效 - 即使它们是不同的对象 - 那么你可以使用EcoreUtils.equals
方法。