Java:Override注释在现代IDE中是否无效?

时间:2011-06-20 07:50:15

标签: java override

仅仅是我,或者在一个不错的IDE中进行编程时,Java的Override注释实际上是无用的吗?

是的,我知道Override注释会阻止我通过拼写错误的方法名称或弄乱方法参数来意外覆盖超级方法。但是,常识告诉我,现代IDE中不太可能发生这种情况,原因如下:

  • IDE在编辑器左侧显示一个标记(即一个小图标),指示该方法是否被覆盖/覆盖。因此,不需要显式覆盖注释来显示覆盖意图。
  • 如果我要重命名方法并且看到这样的覆盖标记,我永远不会直接编辑方法名称 - 我本能地伸手去拿打开IDE重命名助手的键盘快捷键。同样,如果我打算更改方法签名并且我看到覆盖标记,我本能地使用IDE的方法签名助手而不是手工完成(除了非常简单的情况)。因此,方法名称和签名几乎总是正确更改,因此添加覆盖注释(在我看来)只不过是一种偏执和无用的安全检查 - 就像在整个地方传播“最终”一样。

当然,如果你必须在记事本或其他任何地方编写Java代码,那么覆盖注释显然会有所帮助。但我的观点是,在现代IDE中,这种注释提供的安全性增加不值得降低可读性。有什么意见吗?

3 个答案:

答案 0 :(得分:6)

你必须相信自己才能看到这些标记。它有一个人的因素,人类是错误的。从个人经验来看,我经常倾向于忽视那些警告和“标记”。另一方面,编译器更加严格,如果使用Override注释方法,它将确保您真正重写超类方法。

答案 1 :(得分:6)

如果@Override未被覆盖的内容,这在IDE中是显而易见的。但是,如果删除某个方法或在父项中更改其签名,则使用“覆盖此方法”签名的所有位置并不明显。使用IDE执行删除/更改将有所帮助,但如果未检出并使用正确的模块/版本,则可能无法获得所有参考。

答案 2 :(得分:2)

是的,它几乎没用。对于那些觉得有用的人来说,对他们有益。但他们用来证明这种情况的场景并不现实。事实是,许多人不使用@Override,他们从未遇到过任何可能解决的问题。

python dude:覆盖方法时没有提到键盘快捷键(IntelliJ中的Ctrl-O)。我从来没有手动输入我所覆盖的方法的签名,因此不会有拼写错误。