@Override注释在java中是如何工作的?

@Override注释在java中是如何工作的?,java,annotations,Java,Annotations,我知道java中的@Override注释只是告诉编译器在编译时检查并查看它是否真的重写了超类中的方法 从我读到的文章: @覆盖注释定义如下所示: @Target(ElementType.METHOD) @Retention(RetentionPolicy.SOURCE) public @interface Override { } 此注释定义没有告诉编译器在超类中查找相同的方法签名的逻辑 检查它的超类是否具有java编译器中定义的相同方法签名的逻辑?这只是对编译器的提示。通过使用@Overri

我知道java中的@Override注释只是告诉编译器在编译时检查并查看它是否真的重写了超类中的方法

从我读到的文章:

@覆盖注释定义如下所示:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}
此注释定义没有告诉编译器在超类中查找相同的方法签名的逻辑


检查它的超类是否具有java编译器中定义的相同方法签名的逻辑?

这只是对编译器的提示。通过使用
@Override
进行注释,可以告诉编译器您已经从超类重写了一个方法。然后,编译器会检查您是否确实重写了此方法,如果没有重写,则会发出警告。这对确保拼写正确特别有帮助。编译器实际上实现了这个逻辑。

是的,它是。如果用@Override注释的方法实际上没有重写任何内容,则将收到编译错误。但是,这不是注释声明的一部分。编译器将抓取注释,因此检查方法签名的逻辑最终将属于编译器是有意义的。另一个原因是保留策略声明注释随后将被丢弃。