6

EMFオブジェクトに実装させることは可能hashCodeですequalsか?モデルオブジェクトをのキーとして使用できるようにしたいと思いますHashMap

4

4 に答える 4

9

EObject のjavadocはそれについて明確です。EObject は特殊化hashCodeまたはequals. Object#equals(..)ただし、 と の同一性セマンティクスを認識している限り、これらをマップで使用できます#hashCode

于 2011-06-06T13:01:54.677 に答える
2

私は決して EMF の専門家ではありませんが、EObject のラッパー オブジェクトを作成し、関心のある EObject の属性に関してラッパーにメソッドequalshashCodeメソッドを実装し、そのラッパーをキーとして使用することはできます。これにより、マップを検索するときに常にラッパー オブジェクトをインスタンス化する必要がありますが、使用パターンによっては、それほど嫌ではない場合もあります。

変更可能なオブジェクトをマップのキーとして使用するのは難しいことに注意してください。オブジェクトがキーとして使用された後に、ハッシュ コードが変更されるような方法で変更された場合、後でキーを再度見つけるのが難しくなる可能性があります。

于 2011-10-12T18:17:46.813 に答える
1

EcoreUtil.equals()メソッドの背後にあるアルゴリズムがユースケースに適している場合は、を使用できます。

于 2012-01-04T13:59:06.073 に答える
-1

または、各クラスのメソッドを実装 (生成) できますequals。メソッドヘッダーの上にコメントを挿入する必要があります。hashCodeEMF-*Impl@generated not

于 2012-08-25T11:58:15.357 に答える