このクラスはスーパークラスの equals メソッドをオーバーライドする equals メソッドを定義しています。 両方の equals メソッドは、2つのオブジェクトが等しいかどうかの判定で、instanceof を使用しています。 equals メソッドは対称的 (a.equals(b) == b.equals(a)) であることが重要なのでこれは危険を伴っています。 BA のサブタイプなら Aequals メソッドは引数が instanceof A なのかチェックします。 そして、Bequals メソッドは引数が instanceof B なのかチェックします。 これらのメソッドによって定義された同値関係が対称的でないということです。