早稲田大学の太田です。
> 単なるテスト用メソッドなのでそこまでしなくてもいいか
> な?とも感じます。
> 実装で equals メソッドをオーバーライドする必要があるときは、
>
> public boolean equals(Object anObject) {
> if (this == anObject) {
> return true;
> } else if (anObject == null) {
> return false;
> } else if (getClass() != anObject.getClass()) {
> return false;
> }
>
> Member otherMember = (Member)anObject;
> return mailAddress.equals(otherMember.getMailAddress());
> }
>
> こんな感じの良く知られたイデオムを使う方がいいでしょう。
> # VXPのMember クラスを参考に出させていただきました。
>
> public int hashCode() {
> return mailAddress.hashCode();
> }
>
> で、equals メソッドをオーバーライドしたら、必ず hasCode メソッド
> も実装しておくことが推奨されています。
書いた後に自分のあのコードが危険だと思い出しました(上記イディオムの
ように弾いておかないと危険)。失礼致しました。Mapなどに入れる場合
hasCodeもオーバーライドしておかないと駄目という話ですよね。
でも、テスト用のコードにも誤りは結構多いという研究結果は出ていますよ
ね。やっぱりちゃんとしておいた方がよいと思います。
早稲田大学大学院理工学研究科情報科学専攻M2 太田健一郎
e-mail Address oota@....jp
oota@....jp