4 回答

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個贊
每次覆蓋一個方法時使用它有兩個好處。這樣做是為了讓您可以利用編譯器檢查來確保在您認(rèn)為自己真正重寫方法時。這樣,如果您犯了一個錯誤拼寫方法名稱或者沒有正確匹配參數(shù)的常見錯誤,您將收到警告,您的方法實(shí)際上并沒有像您認(rèn)為的那樣覆蓋。其次,它使您的代碼更容易理解,因?yàn)楫?dāng)覆蓋方法時更加明顯。
此外,在Java 1.6中,您可以使用它來標(biāo)記方法何時實(shí)現(xiàn)具有相同優(yōu)點(diǎn)的接口。我認(rèn)為最好有一個單獨(dú)的注釋(比如@Implements
),但它總比沒有好。

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個贊
我認(rèn)為它最有用的是編譯時提醒,方法的意圖是覆蓋父方法。舉個例子:
protected boolean displaySensitiveInformation() { return false;}
您經(jīng)常會看到類似于上述方法的內(nèi)容,它會覆蓋基類中的方法。這是此類的重要實(shí)現(xiàn)細(xì)節(jié) - 我們不希望顯示敏感信息。
假設(shè)此方法在父類中更改為
protected boolean displaySensitiveInformation(Context context) { return true;}
此更改不會導(dǎo)致任何編譯時錯誤或警告 - 但它會完全更改子類的預(yù)期行為。
要回答您的問題:如果缺少超類中具有相同簽名的方法指示錯誤,則應(yīng)使用@Override注釋。

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個贊
這里有很多好的答案,所以讓我提供另一種方式來看待它......
編碼時沒有矯枉過正。鍵入@override不會花費(fèi)任何費(fèi)用,但如果拼寫錯誤的方法名稱或簽名稍有錯誤,可能會節(jié)省大量成本。
這樣考慮一下:當(dāng)你在這里導(dǎo)航并輸入這篇文章的時候,你幾乎花了更多的時間,而不是在你的余生中用@foreride打字; 但它阻止的一個錯誤可以節(jié)省你的時間。
Java盡其所能確保您在編輯/編譯時沒有犯任何錯誤,這是一種幾乎免費(fèi)的方法來解決在全面測試之外無法以任何其他方式阻止的整類錯誤。
你能想出一個更好的Java機(jī)制來確保當(dāng)用戶想要覆蓋一個方法時,他確實(shí)做到了嗎?
另一個簡潔的效果是,如果你不提供注釋,它將在編譯時警告你,你不小心覆蓋了父方法 - 如果你不打算這樣做,這可能是重要的。

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個贊
我總是使用標(biāo)簽。這是一個簡單的編譯時標(biāo)志,可以捕獲我可能犯的小錯誤。
它會捕捉到的東西tostring()
而不是toString()
小事情有助于大型項(xiàng)目。
添加回答
舉報