从有关注解的Java教程中:
@Override—@Override注释告知编译器该元素旨在覆盖超类中声明的元素(覆盖方法将在名为“接口与继承”的课程中进行讨论)。// mark method as a superclass method // that has been overridden @Override int overriddenMethod() { }虽然在重写方法时不需要使用此批注,但它有助于防止错误。如果标有的方法
@Override无法正确覆盖其父类之一中的方法,则编译器将生成错误。
让我们看一下Java语言规范9.6.1.4
Override中给出的示例。假设
equals在这种情况下,您想覆盖一个方法,但是您写道:
public boolean equals(Foo that) { ... }代替:
public boolean equals(Object that) { ... }尽管此代码是合法的,但用
equals方法注释声明
@Override将触发编译时错误,因为实际上您没有覆盖它,而是在重载它。这可能会导致讨厌的错误,并且
Override注释类型有助于及早发现它们。



