不加“@Override”会有什么后果?

What's the consequence of not adding "@Override"?

基于 this well loved question 我知道 @Override 批注是一种很好的编码习惯,因此我们知道我们实际上正在重写正确的方法。但是,除了编码练习之外,不这样做的后果是什么? Java 中是否有一些基础的东西需要那里的注释?

我问是因为我正在使用 XJC. But, in order to add "@Override" without doing hand edits I need to use a separate plug-in from what's available from XJC, which in my case is quite 从 XSD 个文件生成 Java 个 ActiveMQ 消息文件。主要目标是使用 XJC 和我的 Ant build.xml 在构建时重新生成 Java 消息文件,无需任何手动编辑。

Java运行时不需要,只是为了减少编译时的编码错误。

如果您正在生成代码,那么没有 @Override 注释可能会很好,因为代码是生成的而不是手工编写的(因此在这个级别出现人为错误的机会可能更少,例如打字错误) .

不过,如果将 @Override 方法放在生成的方法上,如果生成的代码错误,您可以在编译时捕获。

除了作为一种良好做法和在编译时突出显示继承错误外,它没有任何影响。

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}

RetentionPolicy.SOURCE