有沒有辦法強制使用@Override註解?我可以強制顯式使用@Override嗎?
只是爲了澄清,我不是問「我怎麼強制子類實現的方法」(如this):
public abstract class BaseClass {
public abstract void foo();
}
我問有關此方案具體爲:
public class AnnotatedSubclass extends BaseClass {
@Override
public void foo() {
System.out.println("I have @Override.");
}
}
public class NonAnnotatedSubclass extends BaseClass {
public void foo() {
System.out.println("I do not have @Override.");
}
}
請注意,儘管NonAnnotatedSubclass
沒有明確的@Override
註釋,但兩者都可以編譯。有沒有辦法讓編譯器在NonAnnotatedSubclass
的情況下拋出錯誤/警告?
我問,因爲有時當我擴展類時,我意外地覆蓋父方法,因爲它們的名稱與我將創建的名稱類似(例如Swing中的.paint()
)。
你的IDE可以告訴你什麼時候發生這種情況,並自動修復所有可能有'@ @重寫「,但不要。 –
「'不是指抽象方法」哦,但你應該是,如果它覆蓋'BaseClass'中的方法。 –
[Google的errorprone](http://errorprone.info/bugpattern/MissingOverride)對此進行檢查,以便在編譯時需要它們。 –