Object.hashCode()のデフォルトの動作は、a.hashCode()== b.hashCode()がa == bの場合に限り、オブジェクトの「アドレス」を実質的に返すことです。スーパークラスがすでにhashCode()を定義している場合、どのようにしてユーザー定義クラスでこの動作を取得できますか?たとえば:IDに基づくJavaハッシュコード
class A {
public int hashCode() {
return 0;
}
}
class B extends A {
public int hashCode() {
// Now I want to return a unique hashcode for each object.
// In pythonic terms, it'd look something like:
return Object.hashCode(this);
}
}
アイデア?
いいえ、それはありません。 a.hashCode()!= b.hashCode()は必然的にa!= bを暗示するようにコードを取得することです。 –
...しかし、a.hashCode()== b.hashCode()は、== bを意味するものではありません。 –
"a.equals(b)"が必ずしも "a == b"であるとは限らない場合、ハッシュコードは等しくなければなりません: "a.hashCode()== b.hashCode()" –