2015-11-05 41 views
-1

一個例子:在Android中,通常當你試圖重載一個Activity超類的方法時,你必須有@Override註解,它是強制的。他們如何做到這一點?如何使@Override爲子類強制?

我想強加嚴格我subclss壓倒一切的方法使用@覆蓋。父母課上需要做什麼改變才能實施?

我想執行註釋(不只是重寫基本方法)。

+0

我不認爲你可以用代碼做到這一點 - 有可能是一些在你的IDE(例如Netbeans的顯示一個警告,如果註釋丟失),或者你可以大概用一種風格分析工具,例如CheckStyle的或FindBugs的有一個規則來檢查該註釋。 – assylias

+1

我認爲你問的是強制執行註解,但答案認爲你試圖強制人們重寫你的基本方法。因此,這個問題顯然不清楚。請澄清。 –

+0

這在Android中不是強制性的。唯一可能發生的事情是Android Studio會抱怨說您沒有添加該註釋。 – zapl

回答

2

你可以用代碼質量CI期間檢查工具做到這一點,但你可能要建立自己的(這是中等複雜程度的任務),或添加功能到現有的代碼質量棋子之一。那麼如果註釋不在那裏,那麼你只是簡單地失敗了構建。

+0

聽起來完全可行。我接受+1。感謝您的時間。 – ikis

-1

你不需要@Override批註,我做的插件,「極品他們」沒有它。

+0

不理解這個問題。重寫並不是強制性的,確實如此,但我想強制執行重寫的嚴格使用。 – ikis

-1

如果要強制替代,這意味着,該方法的父類的實現將隱藏肯定。所以它不會在任何情況下被調用,除非從重寫的方法本身。

這意味着,你可以(與class一起)申報方法abstract

abstract class Foo { 
    public abstract void overrideMe(); 
} 
+0

我不認爲你理解這個問題。 –

+0

我認爲你沒有足夠好地解釋你的問題。如果問題是「我如何在子類上強制執行@Override註解」,這對我來說似乎只是一個XY問題。你爲什麼想這麼做? – Jack

-1

沒有辦法強迫任何人替代。如果你製作課程或方法abstract,那麼是的,覆蓋是強制性的。但是,你不提供你的實現,你希望你的子類和/或不幸的維護無人機遵循並基於它們派生自己的覆蓋。如果這個類不是抽象的,沒有人被強制覆蓋任何東西,並且可以儘可能多地使用你的原始方法。

而且@override註釋始終是可選的,你是否會抵消抽象或具體方法。所有註釋都是可選的,因爲它們是元數據,僅對人有用,編譯器完全忽略它們,就像註釋和空格一樣。