@Override注释的目的是什么?

可能重复:
你什么时候使用Java的@Override注释?为什么?

我的问题非常基本,为什么我们人们使用@Override注释,这个注释的重要性是什么?

在旧的JDK中为什么它不显示为警告,但在最新的JDK中它需要那么为什么..?

假设你有:

 public class Foo { public void bar(String x, String y) {} } public class Foo2 extends Foo { public void bar(String x, Object y) {} } 

真的 Foo2.bar要覆盖Foo.bar ,但是由于签名中的错误,它没有。 如果使用@Override ,则可以让编译器检测到故障。 它还向任何读取代码表明这覆盖了现有方法或实现接口 – 告知它们当前行为以及重命名方法可能产生的影响。

此外,如果方法在指定@Override 情况下 @Override方法,则编译器可能会发出警告,这意味着您可以检测是否有人在没有您知道的情况下向超类添加了具有相同签名的方法 – 您可能不希望重写新方法,因为您现有的方法可能具有不同的语义。 虽然@Override没有提供“取消覆盖”该方法的方法,但它至少突出了潜在的问题。

为了确保在编译时我们真正重写该方法,也为代码的可读性增加了很多

@Override自JDK 1.5开始就存在,因此您可能会在之前收到警告

使用此注释,您可能确信您实际上覆盖了基本方法,而不是创建新方法(例如,意外地使用错误的参数)。 如果使用@Override注释,如果出现问题,则会出现编译时错误。

在编译期间validation您实际上是否覆盖了方法。 IDE可以在您提供注释时立即告诉您。