Java @Override注释的用途是什么?

Java @Override注释的用途是什么?,java,Java,可能重复: 我的问题很基本,为什么我们使用@Override注释,这个注释的重要性是什么 在旧的JDK中,为什么不显示为警告,但在最新的JDK中,它需要那么为什么?为了确保在编译时确实重写了该方法,还增加了代码的可读性 从JDK 1.5开始就有了,因此您可能会在之前的中得到警告。使用此注释,您可以确定您确实在重写基本方法,而不是创建新方法(例如,意外使用错误的参数)。如果使用@Override注释,如果出现错误,将出现编译时错误。假设您有: public class Foo { pub

可能重复:

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


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

为了确保在编译时确实重写了该方法,还增加了代码的可读性


从JDK 1.5开始就有了,因此您可能会在之前的

中得到警告。使用此注释,您可以确定您确实在重写基本方法,而不是创建新方法(例如,意外使用错误的参数)。如果使用
@Override
注释,如果出现错误,将出现编译时错误。

假设您有:

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
没有提供“取消重写”方法的方法,但它至少突出了潜在的问题。

在编译时验证您是否确实重写了方法。当您提供注释时,IDE可以立即告诉您。

下面是关于同一主题的讨论【何时使用Java的@Override注释以及为什么?】[1],似乎很有帮助。[1] :(链接可能会帮助您)我没有得到任何编译时错误,请让我知道,我错过了什么