次の equals と hashCode の実装を試しています。
@Override
public boolean equals(Object obj) {
return obj != null && hashCode() == obj.hashCode();
}
@Override
public int hashCode() {
return new HashCodeBuilder().append(myField1).append(myField2).toHashCode();
}
基本的に、同じ を持つ 2 つのクラスがequals
返されることを期待しています。これは、hashCode を生成するために使用しているフィールドの値に帰着します。true
hashCode
これは、たまたまこれらのフィールドに等しい値を持つさまざまなクラスにも返さtrue
れることを認識しています。
質問: そのような実装の落とし穴は何ですか?