EMFオブジェクトに実装させることは可能hashCode
ですequals
か?モデルオブジェクトをのキーとして使用できるようにしたいと思いますHashMap
。
4 に答える
EObject のjavadocはそれについて明確です。EObject は特殊化hashCode
またはequals
. Object#equals(..)
ただし、 と の同一性セマンティクスを認識している限り、これらをマップで使用できます#hashCode
。
私は決して EMF の専門家ではありませんが、EObject のラッパー オブジェクトを作成し、関心のある EObject の属性に関してラッパーにメソッドequals
とhashCode
メソッドを実装し、そのラッパーをキーとして使用することはできます。これにより、マップを検索するときに常にラッパー オブジェクトをインスタンス化する必要がありますが、使用パターンによっては、それほど嫌ではない場合もあります。
変更可能なオブジェクトをマップのキーとして使用するのは難しいことに注意してください。オブジェクトがキーとして使用された後に、ハッシュ コードが変更されるような方法で変更された場合、後でキーを再度見つけるのが難しくなる可能性があります。
EcoreUtil.equals()
メソッドの背後にあるアルゴリズムがユースケースに適している場合は、を使用できます。
または、各クラスのメソッドを実装 (生成) できますequals
。メソッドヘッダーの上にコメントを挿入する必要があります。hashCode
EMF-*Impl
@generated not