亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

你什么時候使用Java的@Override注釋?為什么?

你什么時候使用Java的@Override注釋?為什么?

你什么時候使用Java的@Override注釋?為什么?使用Java @Override注釋的最佳實踐是什么?為什么?使用@Override注釋標記每個重寫方法似乎有點過分。是否有某些編程情況需要使用@Override和其他不應該使用的@Override?
查看完整描述

4 回答

?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

每次覆蓋一個方法時使用它有兩個好處。這樣做是為了讓您可以利用編譯器檢查來確保在您認為自己真正重寫方法時。這樣,如果您犯了一個錯誤拼寫方法名稱或者沒有正確匹配參數的常見錯誤,您將收到警告,您的方法實際上并沒有像您認為的那樣覆蓋。其次,它使您的代碼更容易理解,因為當覆蓋方法時更加明顯。

此外,在Java 1.6中,您可以使用它來標記方法何時實現具有相同優點的接口。我認為最好有一個單獨的注釋(比如@Implements),但它總比沒有好。


查看完整回答
反對 回復 2019-05-27
?
嚕嚕噠

TA貢獻1784條經驗 獲得超7個贊

我認為它最有用的是編譯時提醒,方法的意圖是覆蓋父方法。舉個例子:

protected boolean displaySensitiveInformation() {
  return false;}

您經常會看到類似于上述方法的內容,它會覆蓋基類中的方法。這是此類的重要實現細節 - 我們不希望顯示敏感信息。

假設此方法在父類中更改為

protected boolean displaySensitiveInformation(Context context) {
  return true;}

此更改不會導致任何編譯時錯誤或警告 - 但它會完全更改子類的預期行為。

要回答您的問題:如果缺少超類中具有相同簽名的方法指示錯誤,則應使用@Override注釋。


查看完整回答
反對 回復 2019-05-27
?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

這里有很多好的答案,所以讓我提供另一種方式來看待它......

編碼時沒有矯枉過正。鍵入@override不會花費任何費用,但如果拼寫錯誤的方法名稱或簽名稍有錯誤,可能會節省大量成本。

這樣考慮一下:當你在這里導航并輸入這篇文章的時候,你幾乎花了更多的時間,而不是在你的余生中用@foreride打字; 但它阻止的一個錯誤可以節省你的時間。

Java盡其所能確保您在編輯/編譯時沒有犯任何錯誤,這是一種幾乎免費的方法來解決在全面測試之外無法以任何其他方式阻止的整類錯誤。

你能想出一個更好的Java機制來確保當用戶想要覆蓋一個方法時,他確實做到了嗎?

另一個簡潔的效果是,如果你不提供注釋,它將在編譯時警告你,你不小心覆蓋了父方法 - 如果你不打算這樣做,這可能是重要的。


查看完整回答
反對 回復 2019-05-27
?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

我總是使用標簽。這是一個簡單的編譯時標志,可以捕獲我可能犯的小錯誤。

它會捕捉到的東西tostring()而不是toString()

小事情有助于大型項目。


查看完整回答
反對 回復 2019-05-27
  • 4 回答
  • 0 關注
  • 1709 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號