java - @Override 注释的目的是什么?

标签 java

Possible Duplicate:
When do you use Java's @Override annotation and why?

我的问题是非常基本的为什么我们人们使用 @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 你可以让编译器检测到错误。它向任何阅读代码的人表明这是覆盖现有方法或实现接口(interface)的代码 - 向他们提供有关当前行为和重命名方法可能产生的影响的建议。 p>

另外,如果一个方法重写了一个方法没有指定@Override,你的编译器可能会给你一个警告,这意味着你可以检测是否有人添加了一个带有在您不知道的情况下对父类(super class)进行相同的签名 - 您可能不希望重写新方法,因为您现有的方法可能具有不同的语义。虽然 @Override 没有提供“取消覆盖”该方法的方法,但它至少突出了潜在的问题。

关于java - @Override 注释的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8076008/

相关文章:

java - 从 jdk6 迁移到 jdk8 后出现 DateTime 问题

java - 是否有适用于 Android 的最佳 API 客户端模式?

java - 使 MediaPlayer 停止播放

java - 如何对类型为 <Entry<Character, Integer>> 的 ArrayList 进行排序?

java - Javers 比较不同顺序的列表

java - 如何在 Ubuntu 上安装 JavaFx?

java - Sleep 方法锁定了我的 GUI

Java:从内部类访问 protected 字段

java可扩展的JDialog

java - 在 Android Studio 中导入 Butterknife 后注解 @InjectView 不工作?