假设我在runnable中有这个方法.我总是删除@override.但我想知道这是否有任何负面影响?我试图搜索但没有找到任何东西.
@Override
public void run() {
while (running) {
}
}
Run Code Online (Sandbox Code Playgroud)
该@Override注释不会对你的产品代码任何区别.实际上,注释甚至没有在类的java字节代码中编码,这在注释的定义中说明:
@Target(value=METHOD)
@Retention(value=SOURCE)
public @interface Override
Run Code Online (Sandbox Code Playgroud)
它仅保留在源代码中.
那有什么意义呢?嗯,这是在编译时检查的东西.这允许您声明您有意覆盖超类中的方法.
您会注意到,如果将@Override注释添加到不覆盖父方法的方法,那么您将收到编译错误.
这背后的想法是,如果您从第三方库扩展一个类,并覆盖其中一个方法,那么如果该方法不再存在,则需要发出警告.考虑升级您正在使用的外部库的版本,而不是void run()现在的方法void run(String threadName).
在这种情况下,你的重写方法永远不会被调用,因为它不再覆盖父方法(不是最好的例子,因为你正在实现一个接口 - 所以编译失败无论如何,但想象它是否是一个类).
当您从类和接口覆盖方法时,可以设置此批注(尽管这仅在Java 1.6及更高版本中支持).
| 归档时间: |
|
| 查看次数: |
1771 次 |
| 最近记录: |