2017-08-17 99 views
4

我知道在Java中@Override註釋只是告訴編譯器檢查,看它是否實際上在編譯期間重寫超類中的方法。@Override註解在java中如何工作?

來自我讀的文章:https://dzone.com/articles/how-annotations-work-java

@Override註釋定義僅僅是以下幾點:

@Target(ElementType.METHOD) 
@Retention(RetentionPolicy.SOURCE) 
public @interface Override { 
} 

這個註釋定義對告訴編譯器來尋找超類相同的方法簽名沒有邏輯。

在java編譯器中定義相同方法簽名的邏輯是檢查它的超類嗎?

+0

是的。如果使用@Override註解的方法實際上沒有覆蓋任何內容,您將收到編譯錯誤。儘管這不是註釋聲明的一部分。 – f1sh

+0

編譯器會抓取註釋,因此檢查方法簽名的邏輯最終將與編譯器有關。此外,由於保留策略聲明註釋隨後將被丟棄。 – Mena

回答

2

這只是提示編譯器。通過註釋@Override,您告訴編譯器您已經從超類中覆蓋了一個方法。然後,編譯器會檢查您是否確實重寫了此方法,如果沒有,則會給出警告。這對確保正確的拼寫特別有幫助。編譯器實際上實現了這個邏輯。