是否可以让 EMF 对象实现hashCode
和equals
?我希望能够将模型对象用作HashMap
.
问问题
1226 次
4 回答
9
EObject 的javadoc对此很清楚。一个 EObject 可能没有专门化hashCode
或equals
. 但是,只要您了解 和 的标识语义,就可以在地图中使用Object#equals(..)
它们#hashCode
。
于 2011-06-06T13:01:54.677 回答
2
我绝不是 EMF 专家,但您可以为 EObject 创建一个包装器对象,并根据您感兴趣的 EObject 的属性在包装器中实现equals
和方法,然后使用该包装器作为键。hashCode
这将迫使您在搜索地图时始终实例化包装器对象,但取决于可能不太可恨的使用模式。
请注意,在映射中使用可变对象作为键是很棘手的。如果对象在被用作键后发生变异,导致哈希码发生变化,那么以后可能很难再次找到该键。
于 2011-10-12T18:17:46.813 回答
1
EcoreUtil.equals()
如果方法背后的算法适合您的用例,您可以使用。
于 2012-01-04T13:59:06.073 回答
-1
或者您可以为每个类实现(生成) equals
/hashCode
方法。您必须在方法标题上方EMF-*Impl
插入注释。@generated not
于 2012-08-25T11:58:15.357 回答