単純に3つのインターフェイスオブジェクトで構成された少し(Java)クラスがあるとします。これら3つのオブジェクトが一緒にマップのキー値を構成します。今、私の質問は、クラスのequalsとhashcodeを定義する方法ですか?つまり、そのクラスのすべてのメンバーは、何も実装していないインターフェースだけですか?あなたのオブジェクトがインターフェイスだけで構成されている場合、hashcodeとequalsを定義する方法は?
例:
class SomeKey {
public SomeKey(SomeWeiredInterface1 a, SomeWeiredInterface2 b, SomeWeiredInterface3 c){
....
}
}
最も単純な方法は、次のようになります。
public boolean equals(Object other){
SomeKey otherKey = (SomeKey)other;
return a.equals.otherKey.a && b.equals.otherKey.b && c.equals.otherKey.c;
}
私にとってそれは単に不可能ですように見える、または少なくとも私は自分でこれらのメソッドを記述する必要がありますなぜなら、これらのインタフェースの実装のハッシュコードまたは同等のメソッドを使用(または委譲)できないからです。
ありがとうございました! はThorsten
なぜ:
は、例を参照してください?これらのオブジェクトに対して 'equals'と' hashCode'を完全に細かく呼び出すことができます。 –
これで、インターフェイスを実装するオブジェクトでequalsまたはhashCodeが実行されますか?それは意味をなさないでしょう;-)一方、equalsとhashCodeはインタフェース定義の一部ではありませんか? – user1119859
はいとはい。だから何?これらのメソッドを定義していないインタフェースとして型指定されたオブジェクトに対しては、 'equals'と' hashCode'を呼び出すことができます。 –