繁体   English   中英

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

[英]How to force Java compiler to error if @Override is unnecessary

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

@Override    
public void thisMethodNoLongerOverridesAnything() {}

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

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

根据@Override的 API 文档

如果使用此注释类型对方法进行注释,则要求编译器生成错误消息,除非至少满足以下条件之一:

  • 该方法确实覆盖或实现了在超类型中声明的方法。
  • 该方法的签名与 Object 中声明的任何公共方法的签名等效。

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

错误肯定会来。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM