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

用@Override注释标记每个被重写的方法似乎有点过分。是否有某些编程情况需要使用@Override,而其他情况不应该使用@Override?


当前回答

我每次都用。它提供了更多的信息,当我在一年后重新访问代码时,我可以快速弄清楚发生了什么,而我已经忘记了我第一次想的是什么。

其他回答

我到处都用它。 关于标记方法的工作,我让Eclipse替我做,所以不需要额外的工作。

我对持续重构非常虔诚....所以,我会利用每一件小事让它进行得更顺利。

@Override在接口上实际上是有帮助的,因为如果你改变了接口,你会得到警告。

每次重写一个方法时使用它有两个好处。这样你就可以利用编译器检查来确保你实际上覆盖了一个方法。这样,如果您犯了拼写错误方法名或没有正确匹配参数的常见错误,您将得到警告,您的方法实际上并没有像您认为的那样重写。其次,它使您的代码更容易理解,因为当方法被覆盖时更明显。

此外,在Java 1.6中,您可以使用它来标记方法何时实现接口,以获得同样的好处。我认为最好有一个单独的注释(如@Implements),但总比没有强。

它所做的另一件事是,当读取代码时,它会更明显地改变父类的行为。这有助于调试。

此外,在Joshua Block的著作《Effective Java》(第二版)中,第36项详细介绍了注释的好处。

在实现接口方法时使用@Override完全没有意义。在这种情况下使用它没有任何好处——编译器已经发现了你的错误,所以这只是不必要的混乱。