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



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

为什么哈希码会改变?

EObjects 的equals方法和hashCode基于对象的标识。这是 EMF 规范所要求的。两个不同的对象必须被equals认为是不同的,并且也应该有不同的哈希码,即使它们的成员具有相同的值。

当您复制带有ECoreUtil.Copier的对象时,结果是具有新标识的新对象。

如果你想比较EObjects以确定它们在结构上是否等效 - 即使它们是不同的对象 - 那么你可以使用EcoreUtils.equals方法。

相关内容

最新更新