このクラスは、hashCode
メソッドを定義していますが、 equals
メソッドは java.lang.Object
から継承しています (オブジェクトの参照比較で等価性を判定します)。
これは「等価なオブジェクトは等価なハッシュコードを保持する必要がある」という hashCode
メソッドの汎用規約に従っているかもしれませんが、
おそらく、hashCode
メソッドをオーバーライドすることによって意図したことではないと思われます
(hashCode
メソッドをオーバーライドすることは、オブジェクトの同一性が単純な参照等価性よりも複雑な規約に基づくことを意味します)。
このクラスのインスタンスが HashMap/HashTable に決して代入されるだろうと思わないなら、
推奨される hashCode
メソッドの実装は以下のようになります。
public int hashCode() { assert false : "hashCodeが呼び出されることは想定されていません。"; return 42; // 適当な値 }