1. 程式人生 > >堅持使用Override註解。

堅持使用Override註解。

這個註解只能用在方法宣告中,他表示被註解的方法宣告覆蓋了超型別的一個宣告。如果堅持使用這個註解,剋呀防止一大類的非法錯誤。

如果你在編寫一個沒有標準為抽象的類,並且確信他覆蓋了抽象的方法,在這種情況下,就不必將Override註解放在該方法上了。在沒有宣告為抽象的類中,如果沒有覆蓋抽象的超類方法,編譯器就會發出一條錯誤訊息。但是,你可能希望關注類中所有覆蓋超類方法的方法,在這種情況下,也可以放心的標註這些方法。

現代的IDE提供了堅持使用Override註解的另一種理由。這種IDE具有自動檢查功能,稱作程式碼檢驗(code inspection)。如果啟用相應的程式碼檢驗功能,當有一個方法沒有Override註解,卻覆蓋了超類方法時,IDE就會產生一條警告。如果堅持使用Override註解,這些警告就會提醒你警惕無意識的覆蓋。這些警告補充了編譯器的錯誤訊息,提醒你警惕無意識的覆蓋失敗。IDE和編譯器,可以確保你覆蓋任何你想要覆蓋的方法,無一遺漏。

如果你是用的是Java1.6或者更新的發行版本,Override註解在查詢Bug方面還提供了更多的幫助。在Java 1.6發行版本中,在覆蓋介面以及類的方法宣告中使用Override註解變成是合法的了。在被宣告為去實現某介面的具體類中,不必標註出你想要這些方法來覆蓋介面方法,因為如果你的類沒有實現每一個介面方法,編譯器就會產生一條錯誤資訊。當然,你可以選擇只包括這些註解,來標明他們是介面方法,但是這並非絕對必要。

但是在抽象類或者介面中,還是值得標註所有你想要的方法,來覆蓋超類或者超介面方法,無論是具體的還是抽象的。例如,Set介面沒有給Collection介面新增新方法,因此他應該在他的所有方法宣告中包括Override註解,以確保他不會意外的給Collection介面新增任何新方法。

總而言之,如果在你想要的每個方法宣告中使用Override註解來覆蓋超類宣告,編譯器就可以替你防止大量的錯誤,但有一個例外。在具體的類中,不必標註你確信覆蓋了抽象方法宣告的方法(雖然這麼做也沒有什麼壞處)。