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

pyt*_*ude 4 java overriding

它只是我,还是Java的Override注释在一个体面的IDE中编程时实际上没用?

是的,我知道Override注释可以防止我意外地通过拼写方法名称或弄乱方法参数来覆盖超级方法.但是,常识告诉我这在现代IDE中不太可能发生,原因如下:

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

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

ald*_*rin 6

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


Pet*_*rey 6

如果你@Override没有被覆盖的东西,这在IDE中很明显.但是,如果删除某个方法或在父项中更改其签名,则使用"覆盖此方法"签名的所有位置并不明显.使用IDE执行删除/更改将有所帮助,但如果未检出并使用正确的模块/版本,则可能无法获得所有引用.