@Override注释的目的是什么?

Sum*_*ngh 22 java

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

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

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

Jon*_*eet 34

假设你有:

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

public class Foo2 extends Foo
{
    public void bar(String x, Object y) {}
}
Run Code Online (Sandbox Code Playgroud)

真的意味着Foo2.bar覆盖Foo.bar,但由于在签名中的错误,它没有.如果使用@Override,可以让编译器检测到故障.这说明任何阅读,这是压倒一切的现有方法或实现接口的代码-他们对当前的行为和重命名方法可能产生的影响提出建议.

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


Jig*_*shi 6

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

@Override 自从JDK 1.5以来就存在,所以你可能会在之前收到警告