クラス A { }
クラス B は A { } を拡張します
オブジェクト o1 = 新しい A();
オブジェクト o2 = 新しい B();
o1 インスタンスオブ A => true
o1 インスタンス B => false
o2 instanceof A => true // <================ HERE
o2 インスタンス B => true
o1.getClass().equals(A.class) => true
o1.getClass().equals(B.class) => false
o2.getClass().equals(A.class) => false // <===============HERE
o2.getClass().equals(B.class) => true
getClass() は、インスタンスが比較対象のクラスのサブクラスではないことを確認したい場合に役立ちます。
一つの非常に完璧な等しい方法の写法:
// 明示的なパラメータが null の場合は false を返す必要があります
if (otherObject == null) は false を返します。
// クラスが一致しない場合、それらを等しくすることはできません
if (getClass() != otherObject.getClass()) は false を返します。
// これで、otherObject が null ではない Employee であることがわかりました。
従業員その他 = (従業員) otherObject;
// フィールドの値が同じかどうかをテストします
return name.equals(other.name) &&給与 == other.salary && recruitDay.equals(other.hireDay);
}