簡體   English   中英

關於@Override注解的問題

[英]Question about @Override annotation

我是android開發的新手。 我想知道為什么我們必須在android中的每個重寫方法前加上@Override注釋? 在常規Java中,這不是必需的。

請幫忙謝謝

使用@Override表示法,以便如果方法簽名與超類方法簽名不同,則編譯器可以警告您。 它可以警告您乏味的錯誤,並且在Android中不是必需的,但是在“常規” Java編程和Android編程中都是好的做法。

如果您在“普通” Java中拼寫了toString方法,例如public String toString(int n) {...}並且您使用了@Override ,編譯器會警告您,因為您沒有覆蓋超類中的方法。

這是最佳做法,而且很安全。 假設您有一堂課:

public class MyClass {
   ...
   ...
   public void doSomething() {
      ...
      ...
   }
}

現在假設您擴展它:

public class MyExtendedClass extends MyClass {
   ...
   ...
   public void doSomthing() {
     ...
   }
}

這段代碼可以編譯,但是會遇到問題,因為您實際上沒有覆蓋該方法! 注意拼寫錯誤。 現在,如果您使用@Override對其進行注釋:

public class MyExtendedClass extends MyClass {
   ...
   ...
   @Override
   public void doSomthing() {
     ...
   }
}

Java編譯器會抱怨,因為您試圖覆蓋基類中不存在的方法。 本質上,使用@Override可使您在編譯時捕獲此類問題。

重構時,此功能特別有用。 如果您更改方法簽名或名稱,但沒有@Override批注,則某些方法可能會@Override ,從而導致難以發現的錯誤(當然,對於現代IDE來說,可以減輕很多這種麻煩,但是,仍然)。 如果您明智地使用@Override批注,則現在會遇到編譯器錯誤,因此可以在派生類中修復方法簽名。

因為這是一種好的編程習慣。 如果基本方法的簽名發生更改,則在不使用@Override情況下覆蓋方法會在將來導致潛在的難以發現的錯誤(我之前在此類錯誤上已經浪費了數小時)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM