【EffectiveJava[8]】

<第 3 章 すべてのオブジェクトに共通のメソッド>
項目8:equals をオーバーライドする時は一般契約に従う

■著書からの要点抜粋
①以下のどれかにあてはまるのであれば、オーバーライドはしない。
・クラスの個々のインスタンスは、本質的に一意である。
・「論理的等価性」検査を、クラスが提供するかどうかに関心がない。
スーパークラスがすでにequalsメソッドをオーバーライドしており、
 スーパークラスの振る舞いがこのクラスに対して適切である。
・クラスがprivateあるいはパッケージプライベートであり、
 そのequalsメソッドが決して呼び出されないことが確かである。
②高い品質のequalsメソッドに対する処方箋は次の通りです。
1.引数が自分自身のオブジェクトであるかを検査するのにい==演算子を使用する。
2.引数が正しい型であるかを検査するのにinstanceof演算子を使用します。
3.引数を正しい型にキャストします。
4.クラスの各「意味のある」フィールドに対して、引数のオブジェクトのフィールドが、
  このオブジェクトの対応するフィールドと一致するかを検査します。
5.equalsメソッドを書き終えた時に、3つの質問を自問してみます。
  equalsメソッドが、対照的か、推移的か、整合的か。

■所感
わりとはしょりました、、、
②の話は実例のソースを見てからだとしっくりきました。

Effective Java プログラミング言語ガイド

Effective Java プログラミング言語ガイド