2011-11-10 106 views
21

可能重複:
When do you use Java's @Override annotation and why?@Override註釋的用途是什麼?

我的問題是非常基本的,爲什麼我們的人使用@Override註釋的,什麼是該註釋的重要性?

在舊的JDK爲什麼它不顯示爲警告,但在最新的JDK它需要那麼爲什麼..?

+0

這是關於同一主題的討論[你什麼時候使用Java的@Override註解,爲什麼?] [1],似乎很有幫助。 [1]:http://stackoverflow.com/questions/94361/when-do-you-use-javas-override-annotation-and-why – COD3BOY

+0

(http://docs.oracle.com/javase /tutorial/java/annotations/predefined.html] [此鏈接可能會對您有所幫助] –

回答

32

假設您有:

public class Foo 
{ 
    public void bar(String x, String y) {} 
} 

public class Foo2 extends Foo 
{ 
    public void bar(String x, Object y) {} 
} 

真的意思Foo2.bar覆蓋Foo.bar,但由於在簽名中的錯誤,它沒有。如果您使用@Override,則可以讓編譯器檢測到故障。它指示任何讀取代碼,這是覆蓋現有的方法或實現一個接口 - 建議他們當前的行爲和重命名該方法可能產生的影響。

此外,你的編譯器可能會給你一個警告,如果一個方法覆蓋的方法沒有指定@Override,這意味着你可以檢測是否有人添加具有相同簽名的超類的方法而你沒有意識到這一點 - 你可能不會想要重寫新方法,因爲你現有的方法可能有不同的語義。雖然@Override沒有提供一種「重寫」該方法的方法,但它至少強調了潛在的問題。

6

只是爲了確保在編譯的時候,我們真的是壓倒一切的方法,還增加了良好的量的代碼

@Override可讀性也因爲JDK 1.5,所以你可能會在之前

2

警告使用這個註解,你可能確定你確實重寫了基本方法,而不是創建新方法(例如,意外地使用錯誤的參數)。如果使用@Override註釋,如果某些內容不正確,將會導致編譯時錯誤。

+0

我不會收到任何編譯時錯誤,請讓我知道,我錯過了什麼[這裏](http://stackoverflow.com/questions/ 23191807 /使用-的修調註釋功能於定製監聽級 - 犯規 - 工作作爲預期) – paul

1

在編譯期間驗證您確實重寫了方法。當您提供該註釋時,IDE可以立即告訴您。