首页 > 解决方案 > 使用 Ecoreutil.Copier 复制的对象的结果哈希码与原始哈希码不同

问题描述

ECoreUtil.Copier用来创建我的EObject. 但是,会创建精确的副本,但具有不同的哈希码。

为什么哈希码会改变?

标签: eclipsemodelingemfeclipse-emf

解决方案


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

当您复制对象时ECoreUtil.Copier,结果是具有新身份的新对象。

如果您想比较 EObject 以了解它们在结构上是否等效——即使它们是不同的对象——那么您可以使用该EcoreUtils.equals方法。


推荐阅读