【问题标题】:Resulting hash codes of object copied with Ecoreutil.Copier is different from original使用 Ecoreutil.Copier 复制的对象的结果哈希码与原始哈希码不同
【发布时间】:2018-10-23 08:12:12
【问题描述】:

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

为什么哈希码会改变?

【问题讨论】:

  • 如果对象使用来自Object 的默认hashCode,这就是您所期望的 - 每个对象都有不同的哈希码。

标签: eclipse modeling emf eclipse-emf


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 2013-05-19
    • 2019-05-03
    • 1970-01-01
    相关资源
    最近更新 更多