2012-04-05 92 views
0

在我從一個界面上刪除未使用的方法,和預期的javac和Eclipse抱怨的事實,我的實現類仍然聲稱覆蓋它:如何強制Java編譯錯誤,如果@Override是不必要

@Override  
public void thisMethodNoLongerOverridesAnything() {} 

但是,我沒有收到錯誤甚至是警告。

在這種情況下,有沒有辦法配置javac或Eclipse來投訴?

回答

4

按照API doc of @Override

如果一個方法與此註釋類型編譯註釋是 需要產生一個錯誤消息除非的 以下條件中的至少一個成立:

  • 該方法重寫或實現在超類型中聲明的方法。
  • 該方法的簽名與在Object中聲明的任何公用方法的簽名相同。

因此,無論你的評判仍然會覆蓋的東西,或者你發現在javac和Eclipse的一個bug,我懷疑。

+0

我認爲它更可能只是一個在日食中的錯誤,沒有任何暗示必須是兩個錯誤。如果我手動編譯它,那麼它會正確報告錯誤。 – GripnRip 2012-04-05 16:07:46

0

錯誤肯定會出現。

interface A void funA(); }

class Test implements A{ 
@Override 
public void funA(){ 

} 
@Override 
public void B(){ 

} 
} 

錯誤:方法B()類型的測試必須重寫或實現的超類型方法

Sugessions: create B() in supertype A 
      remove Override annotation 
0

在Eclipse:

Properties > Java Compiler > Errors/Warnings

@Override註釋是下Annotations並且在默認情況下被忽略。

編輯:只是重新閱讀這個問題。如果您有不必要的@Override,而您錯過了它,則希望收到警告。

0

如果您使用的是JDK 1.5,則忽略@Override註釋。

看看this( - >也可以將eclipse首選項中的JDK合規性設置爲1.5)。