首頁 > Java > java教程 > `equals()` 中的 `getClass()` 與 `instanceof`:您應該使用哪一個?

`equals()` 中的 `getClass()` 與 `instanceof`:您應該使用哪一個?

Linda Hamilton
發布: 2024-12-03 10:59:08
原創
636 人瀏覽過

`getClass()` vs. `instanceof` in `equals()`: Which Should You Use?

你應該在 .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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板