實作.equals()時在getClass()和instanceof之間進行選擇
Java中實作.equals()方法時,一個重要的步驟是比較被比較的兩個物件的類型。 Eclipse 提供了兩個選項來執行此操作:使用 getClass() 或 instanceof。預設情況下,Eclipse 建議使用 getClass(),但檢查每種方法背後的原因很重要。
getClass() 方法
在此方法中,方法檢查如果兩個物件的 getClass() 傳回值相等。雖然這確保了物件屬於同一類,但它在處理繼承時產生了限制。如果一個物件是另一個物件的子類,即使它們具有相同的基本屬性,它們也不會被視為相等。這可能會導致像 HashTables 這樣的集合出現意外行為,其中無法使用超類別實例檢索子類別。
instanceof 方法
Josh Bloch 青睞的instanceof 方法使用instanceof 運算子檢查第一個物件是否是同一類別的實例或第二個物件的類別的子類。這種方法符合里氏替換原則,允許子類別的物件被視為與超類別的物件等效。它還允許您避免對 null 物件的冗餘檢查,因為所有非 null 物件都會通過 instanceof 測試。
結論
而getClass() 方法對於簡單的情況來說就足夠了,instanceof 方法通常因其靈活性和遵循物件導向的設計原則而受到青睞。它確保物件根據其行為而不是其確切類型被視為相等,並避免繼承場景中的意外行為。
以上是`getClass() 與 Java .equals() 中的 instanceof:哪種方法最好?的詳細內容。更多資訊請關注PHP中文網其他相關文章!