你應該在 .equals() 方法中使用 'getClass()' 還是 'instanceof' 嗎?
產生 .equals() 時使用 Eclipse 的方法,您可以選擇使用「instanceof」或「.getClass()」來比較類型。預設情況下,Eclipse 使用 '.getClass()',這讓許多程式設計師想知道是否應該切換到 'instanceof'。
有什麼差別?
.getClass() 直接比較兩個物件的執行時間類型,而instanceof 檢查物件是否為特定類別或介面的實例。例如:
if (getClass() != obj.getClass()) // Using getClass() if (!(obj instanceof MyClass)) // Using instanceof
您應該使用哪一個?
根據 Java 專家 Josh Bloch 的說法,「instanceof」是首選方法,因為它不限制與相同的運行時類型相等。這意味著您可以擴展類別並添加方法,而不會影響共享相同重要方面的物件的相等性。
此外,它符合里氏替換原則,該原則規定應該能夠使用子類代替它的超類而不破壞代碼。使用 '.getClass()' 違反了這個原則,導致像 HashTable 這樣的集合中出現意外行為。
總之,'instanceof' 提供了更大的靈活性,建議用於 .equals() 方法。雖然您可以使用“instanceof”刪除“if (obj == null)”檢查,但為了清晰和完整,通常建議保留它。
以上是`equals()` 中的 `getClass()` 與 `instanceof`:您應該使用哪一個?的詳細內容。更多資訊請關注PHP中文網其他相關文章!