如果不需要@Override,如何强制Java编译器出错

时间:2012-04-05 11:10:49

标签: java eclipse

我从界面中删除了一个未使用的方法,并且期望javac和Eclipse抱怨我的实现类仍然声称覆盖它:

@Override    
public void thisMethodNoLongerOverridesAnything() {}

但是,我没有收到错误甚至是警告。

在这种情况下,有没有办法配置javac或Eclipse来抱怨?

4 个答案:

答案 0 :(得分:5)

根据API doc of @Override

  

如果使用此注释类型编译方法,则编译器是   需要生成错误消息,除非至少有一个   以下条件成立:

     
      
  • 该方法会覆盖或实现以超类型声明的方法。
  •   
  • 该方法的签名覆盖等效于Object中声明的任何公共方法。
  •   

所以要么你的方法仍然覆盖了某些东西,要么你在javac和eclipse中都发现了一个错误,我怀疑。

答案 1 :(得分:0)

错误肯定会出现。

接口A {     void funA();     }

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

}
@Override
public void B(){

}
}

错误:Test类型的方法B()必须覆盖或实现超类型方法

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

答案 2 :(得分:0)

在Eclipse中:

Properties > Java Compiler > Errors/Warnings

@Override注释位于Annotations下,默认情况下会被忽略。

编辑:重新阅读问题。如果你有一个不必要的@Override,你想要被警告,而不是当你错过它时。

答案 3 :(得分:0)

如果您使用的是JDK 1.5,则忽略@Override注释。

看一下this( - >也可以将eclipse首选项中的JDK Compliance设置为1.5)。