A類{}
B 類別擴充 A { }
物件 o1 = new A();
物件 o2 = new B();
o1 A實例 => true
o1 instanceof B => false
o2 instanceof A => true // <================ 這裡
o2 instanceof B => true
o1.getClass().equals(A.class) => true
o1.getClass().equals(B.class) => false
o2.getClass().equals(A.class) => false // <================此處
o2.getClass().equals(B.class) => true
當您想要確保您的執行個體不是您正在比較的類別的子類別時,getClass() 將會很有用。
一個非常完美的等於方法的寫法:
// 如果明確參數為 null 則必須傳回 false
if (otherObject == null) 回傳 false;
// 如果類別不匹配,則它們不能相等
if (getClass() != otherObject.getClass()) 回傳 false;
// 現在我們知道 otherObject 是個非空 Employee
員工其他 = (員工) otherObject;
// 測試欄位值是否相同
return name.equals(other.name) && 薪資 == other.salary && HireDay.equals(other.hireDay);
}