【问题标题】:What is the purpose of the @Override annotation? [duplicate]@Override 注释的目的是什么? [复制]
【发布时间】:2011-11-10 07:07:13
【问题描述】:

可能重复:
When do you use Java's @Override annotation and why?

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

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

【问题讨论】:

标签: java


【解决方案1】:

假设你有:

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,您可以让编译器检测故障。它向任何阅读代码的人表明这是覆盖现有方法或实现接口的代码 - 向他们提供有关当前行为和重命名方法可能产生的影响的建议。 p>

另外,如果一个方法重写了一个方法没有指定@Override,你的编译器可能会给你一个警告,这意味着你可以检测到是否有人向超类添加了具有相同签名的方法,而没有您意识到这一点 - 您可能不想要覆盖新方法,因为您现有的方法可能具有不同的语义。虽然@Override 没有提供“取消覆盖”该方法的方法,但它至少突出了潜在问题。

【讨论】:

    【解决方案2】:

    只是为了确保在编译时我们真的重写了方法,同时也增加了代码的可读性

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

    【讨论】:

      【解决方案3】:

      使用此注解,您可以确定您确实在覆盖基本方法,而不是创建新方法(例如,不小心使用了错误的参数)。如果你使用@Override注解,如果有什么不对,你会得到编译时错误。

      【讨论】:

      • 我没有收到任何编译时错误,请告诉我,我错过了什么here
      【解决方案4】:

      在编译期间验证您实际上是在覆盖一个方法。当您提供该注释时,IDE 可以立即告诉您。

      【讨论】:

        猜你喜欢
        • 2023-03-06
        • 2010-10-08
        • 1970-01-01
        • 2011-01-21
        • 2015-06-14
        • 2014-12-11
        • 2020-11-05
        • 2011-07-11
        • 2011-09-30
        相关资源
        最近更新 更多