为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

aluckdog 2019-09-19 09:46:36
是否应该使用实现接口方法的方法进行注释@Override?注释的javadocOverride说:指示方法声明旨在覆盖超类中的方法声明。如果使用此批注类型注释方法但不覆盖超类方法,则编译器需要生成错误消息。我不认为接口在技术上是超类。或者是吗?
查看完整描述

3 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

你应该尽可能使用@Override。它可以防止出现简单的错误。例:


class C {

    @Override

    public boolean equals(SomeClass obj){

        // code ...

    }

}

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


对于实现接口(仅限1.6及更高版本)或覆盖超类的方法的方法也是如此。


查看完整回答
反对 回复 2019-09-19
?
动漫人物

TA贡献1815条经验 获得超10个赞

我相信javac的行为已经改变了 - 用1.5它禁止了注释,而1.6则没有。注释提供额外的编译时检查,所以如果你使用1.6,我会去做。


查看完整回答
反对 回复 2019-09-19
?
偶然的你

TA贡献1841条经验 获得超3个赞

如果方法@Override可用,您应该始终注释方法。

在JDK 5中,这意味着重写超类的方法,在JDK 6和7中,它意味着重写超类的方法,并实现接口的方法。如前所述,原因是它允许编译器捕获您认为重写(或实现)方法的错误,但实际上是定义了一个新方法(不同的签名)。

所述equals(Object)对比equals(YourObject)例子就是一个标准的情况下,但相同的参数可以用于接口实现制成。

我想象一下,注释接口的实现方法并不是强制性的原因是JDK 5将此标记为编译错误。如果JDK 6强制使用此注释,则会破坏向后兼容性。

我不是Eclipse用户,但在其他IDE(IntelliJ)中,@Override只有在项目设置为JDK 6+项目时,才会在实现接口方法时添加注释。我认为Eclipse是类似的。

但是,我更希望看到这种用法的不同注释,可能是@Implements注释。


查看完整回答
反对 回复 2019-09-19
  • 3 回答
  • 0 关注
  • 1108 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信