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

本文讨论了在Java中使用@Override注释的必要性和最佳实践。使用该注释可以确保编译器检查重写方法的正确性,避免因方法签名错误或接口方法更改而导致的问题。虽然在实现接口方法时它不是必需的,但一些开发者认为它增加了代码的清晰度,有助于在代码重构时避免错误。不同IDE对此有不同的默认设置和兼容性,建议根据具体项目需求和团队规范来决定使用@Override的策略。
摘要由CSDN通过智能技术生成

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

@Override注释标记每个被覆盖的方法似乎是多余的。 是否有某些编程情况要求使用@Override而另一些则永远不要使用@Override


#1楼

接口实现上的@Override是不一致的,因为在Java中没有“覆盖接口”之类的东西。

@Override在接口实现上是没有用的,因为在实践中它不会捕获编译无论如何都不会捕获的错误。 只有一种牵强附会的情况,实现者的重写实际上会做一些事情:如果您实现一个接口,并且该接口使用REMOVES方法,则将在编译时通知您应删除未使用的实现。 请注意,如果新版本的接口具有NEW或CHANGED方法,则显然您将获得编译错误,因为您没有实现新的东西。

在1.6中,绝对不应在接口实现程序上使用@Override,并且由于eclipse不幸地选择将注释自动插入为默认行为,因此,我们得到了很多混乱的源文件。 在阅读1.6代码时,您无法从@Override注释中看到某个方法是否实际上覆盖了超类中的方法或仅实现了一个接口。

在实际重写超类中的方法时使用@Override很好。


#2楼

要利用编译器检查的优势,您应该始终使用Override注释。 但是请不要忘记,当重写接口方法时,Java Compiler 1.5将不允许此注释。 您仅可以使用它来覆盖类方法(是否抽象)。

某些IDE(例如Eclipse)甚至配置了Java 1.6运行时或更高版本,它们仍然符合Java 1.5,并且不允许如上所述使用@override。 为了避免这种行为,您必须转到:项目属性-> Java编译器->选中“启用项目特定设置”->选择“编译器符合级别” = 6.0或更高。

如果基础是接口或类,我每次独立重写方法时都喜欢使用此批注。

这可以帮助您避免一些典型的错误,例如当您以为您要覆盖事件处理程序,然后什么也没看到时。 假设您要向某个UI组件添加事件侦听器:

someUIComponent.addMouseListener(new MouseAdapter(){
  public void mouseEntered() {
     ...do something...
  }
});

上面的代码可以编译并运行,但是如果将鼠标移到someUIComponent内,则“执行某些操作”代码将记录运行情况,因为实际上您没有覆盖基本方法mouseEntered(MouseEvent ev) 。 您只需创建一个新的无参数方法mouseEntered() 。 代替该代码,如果您使用@Override批注,则会看到编译错误,而您并没有在浪费时间思考为什么事件处理程序未运行。


#3楼

  • 仅用于方法声明。
  • 指示带注释的方法声明将覆
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值