你什么时候使用Java的@Override注解,为什么?

使用Java的@Override注释的最佳实践是什么?为什么?

@Override注解来标记每一个重写的方法似乎是过度的。 是否有某些编程情况需要使用@Override和其他不应使用@Override编程?


每次你重写一个方法有两个好处时使用它。 这样做是为了让你可以利用编译器检查来确保当你认为自己确实在重写某个方法时。 这样,如果您在拼写错误的方法名称或未正确匹配参数时犯了一个常见错误,您将被警告您的方法实际上并未按照您的想法覆盖。 其次,它使你的代码更易于理解,因为当方法被覆盖时它更明显。

另外,在Java 1.6中,您可以使用它来标记方法实现接口的时间是否相同。 我认为最好有一个单独的注释(比如@Implements ),但总比没有好。


我认为这是最有用的编译时提醒,该方法的意图是重写一个父方法。 举个例子:

protected boolean displaySensitiveInformation() {
  return false;
}

您经常会看到像覆盖基类中的方法的上述方法。 这是该课程的一个重要实施细节 - 我们不希望显示敏感信息。

假设此方法在父类中更改为

protected boolean displaySensitiveInformation(Context context) {
  return true;
}

此更改不会导致任何编译时错误或警告 - 但它完全改变了子类的预期行为。

要回答你的问题:如果在超类中缺少具有相同签名的方法表示有错误,则应使用@Override注释。


这里有很多很好的答案,所以让我提供另一种方式来看看它...

编码时不会出现矫枉过正的情况。 输入@override并不需要花费任何东西,但是如果拼写方法名称或签名稍微错误,节省额度可能非常大。

这样想:当你在这里浏览并键入这篇文章的时候,你会花费更多的时间,而不是在你的余生中输入@override; 但它阻止的一个错误可以节省您的时间。

Java尽其所能确保您在编辑/编译时没有犯任何错误,这是一种几乎免费的方式来解决在全面测试之外无法以任何其他方式防止的整个类错误。

你能想出一个更好的Java机制来确保当用户打算重写一个方法时,他实际上做了什么?

另一个巧妙的效果是,如果你没有提供注释,它会在编译时警告你意外地超过了父级方法 - 如果你不打算这样做,这可能是重要的。

链接地址: http://www.djcxy.com/p/68259.html

上一篇: When do you use Java's @Override annotation and why?

下一篇: Can Java Annotations help me with this?