我们应该@Override 接口的方法实现吗?

新手上路,请多包涵

实现接口方法的方法是否应该用 @Override 注释?

Override 注释的 javadoc 说:

指示方法声明旨在覆盖超类中的方法声明。如果使用此注释类型对方法进行注释但未覆盖超类方法,则编译器需要生成错误消息。

我不认为接口在技术上是超类。或者是吗?

问题阐述

原文由 Benno Richters 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 766
2 个回答

您应该尽可能使用@Override。它可以防止犯简单的错误。例子:

 class C {
    @Override
    public boolean equals(SomeClass obj){
        // code ...
    }
}

这不会编译,因为它没有正确覆盖 public boolean equals(Object obj)

这同样适用于实现接口( 仅限 1.6 及更高版本)或覆盖超类方法的方法。

原文由 jjnguy 发布,翻译遵循 CC BY-SA 3.0 许可协议

我相信 javac 的行为已经改变 - 1.5 禁止注释,1.6 则没有。注释提供额外的编译时检查,因此如果您使用的是 1.6,我会使用它。

原文由 Jon Skeet 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题