コツコツ学習ブログ

プログラマのweb上のメモ的なもの

equals()のオーバーライド(equalsと==)

equals()は、2つの変数に入っているインスタンスを比較して等価であるかを判定する。

■等価判定 equals()を使用する 2つのインスタンスが同じ内容であること。 何をもって同じとするかは、クラスの作成者が決める→equalsのオーバーライド

Stringクラスなどの標準APIクラスは適切にオーバーライドしている。

■等値判定 2つのインスタンスが完全に同一の存在であること。 (同じアドレスを指していること)

何故equals()メソッドをオーバーライドする必要があるのか?

equalsを正しくオーバーライドしていない自作クラスをコレクションに格納すると、 要素の削除が行えないなどの誤動作につながるおそれがある。 また、hashCodeメソッドもオーバーライドが必要。

具体的にどうしたらいいか?

Eclipseに自動生成機能があるらしい。 使用する場面に出くわしたら下記を参考にさせていただく。

buzzword111.hatenablog.com