恐らく疑わしい質問ですが、私はこれを台無しにしたくありません。たとえば、私が2つのJavaクラス、Class1
とClass2
を持っているとしましょう。ここではClass2 extends Class1
です。両方のクラスでGuavaを使用してObject.hashcode()
をオーバーライドしたいと思います。スーパークラスのために、私はクラス2の場合Guava Objects.hashcode()の実装にスーパークラスを組み込む正しい方法は?
@Override
public int hashCode() {
return Objects.hashcode(mField1, mField2);
}
を持っている、考慮のClass1のメンバーをとる)(ハッシュコードを実装するための正しい方法は何ですか?それはこれのようなものですか?
@Override
public int hashcode() {
return Objects.hashcode(super.hashcode(), mField3, mField4);
}
私には分かりますが、いくつかの検証が必要です。 Joshua BlochはEffective Javaのこの状況に対処しておらず、Guavaのドキュメントもそうではありません。
完全に合理的な実装は、(。推論同じ論法は、hashCode()メソッドに適用されます)バグを特定するにはsuper.hashCode()に依存しないでください。 –
皆様に感謝しております。私の場合、Class1とClass2のインスタンス間の平等性をテストする必要はありませんが、以下の点は理解して理解しておくのが良いことです。 –