2009-06-17 108 views

回答

53

在這種情況下,我傾向於使用@Override,這樣如果超類更改(完全刪除方法或更改其簽名,等等),該方法將在子類中被標記。

唯一的區別是,沒有註釋,如果在超類/接口的方法改變或除去,所討論的實現簡單地成爲該類別的一個「正常」的方法。因此,如果您只是爲了履行合同而實施該方法,您應該添加註釋;如果該方法在您的類中有意義,則不應該添加它,而不考慮任何已實現的接口或繼承的抽象方法。

+4

您還需要Java 6來利用此註釋。 Java 5不允許你將它放在接口實現上。 – akarnokd 2009-06-17 09:03:21

13

是。這是Joshua Bloch在Effective Java中推薦的練習。

19

是的 - 它再次告訴編譯器,「我真的想在這裏重寫一個方法。如果有不是是一個覆蓋的相應方法,我犯了一個錯誤,想要告訴它!」

我個人認爲這是一個遺憾,這只是一個註釋,而不是語言的一部分(因爲它是在C#),但是那是當然的後見之明。

+0

+1爲「迴歸測試」 – guerda 2009-06-17 08:58:23

+1

保存了我的皮膚幾次。 – 2009-06-17 15:37:16

6

事實上,約書亞·布洛克,在178頁的有效的Java最後一段(第2版)說,它不是必需的具體類重寫抽象方法使用Override註釋的方法,因爲編譯器會無論如何給錯誤。但是,「這樣做並沒有害處」。

我建議選擇一個策略,始終堅持它。

相關問題