Effective Java Item 40:一致地使用 @Override 註解
整理 Effective Java 書中 Item 40: Use @Override annotations 心得筆記
主旨
在 Java 裡,如果你要「覆寫(override)」父類別或介面的某個方法,請務必加上 @Override
註解。這個小小的標記,不只是告訴編譯器「我想要覆寫」,更是一道保險機制,可以幫助你避免不小心寫出錯誤的程式碼。
點出問題
假設我們寫了一個類別,想要覆寫 equals
方法,但不小心拼錯了方法名稱:
這段程式碼表面上沒錯,但實際上並沒有覆寫 Object
的 equals(Object obj)
,因為參數型別不同。這會導致預期行為錯誤,卻不會有任何編譯錯誤。
加上 @Override
註解後,編譯器會幫你檢查是否真的有成功覆寫:
劃重點
@Override
不是裝飾用,它的作用是讓編譯器幫你驗證覆寫正確性。- 如果你漏掉
@Override
,Java 編譯器不會警告你,就可能埋下 bug。 - 對於 實作介面的方法也要加上
@Override
,尤其從 Java 6 以後,這已經是被支持的用法。
真實世界範例
在企業專案中,我曾看過有人忘記加 @Override
,導致父類的某個方法沒被正確覆寫,最後系統的權限判斷邏輯整個失效。這種錯誤通常難以察覺,若當時加上註解,編譯器就會直接提示,節省大量除錯時間。
小結
只要你要覆寫父類或介面的任何方法,就加上 @Override
。這個習慣不僅能幫助你快速抓出錯誤,也讓程式碼更具可讀性與一致性。這不是畫蛇添足,而是一種專業工程師應有的基本防線。
Read other posts