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



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

@Override    
public void thisMethodNoLongerOverridesAnything() {}

然而,我没有得到错误,甚至没有得到警告。

在这种情况下,有没有一种方法可以配置javac或Eclipse来抱怨?

根据@Override 的API文档

如果使用此注释类型对方法进行注释,则编译器为生成错误消息所需的,除非以下条件成立:

  • 该方法确实重写或实现了在超类型中声明的方法
  • 该方法的签名重写等效于在Object中声明的任何公共方法的签名

所以,要么你的方法仍然覆盖了一些东西,要么你在javac和eclipse中都发现了一个bug,我对此表示怀疑。

错误肯定会出现。

接口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

在Eclipse中:

Properties > Java Compiler > Errors/Warnings

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

编辑:只要重读这个问题。如果你有一个不必要的@Override,而不是当你错过它时,你需要得到警告。

如果使用JDK 1.5,则会忽略@Override注释。

看看这个(->也可以是eclipse首选项中的JDK Compliance设置为1.5)

最新更新