@Override注释的目的是什么?
可能重复:
你什么时候使用Java的@Override注释?为什么?
我的问题非常基本,为什么我们人们使用@Override
注释,这个注释的重要性是什么?
在旧的JDK中为什么它不显示为警告,但在最新的JDK中它需要那么为什么..?
假设你有:
public class Foo { public void bar(String x, String y) {} } public class Foo2 extends Foo { public void bar(String x, Object y) {} }
你真的 Foo2.bar
要覆盖Foo.bar
,但是由于签名中的错误,它没有。 如果使用@Override
,则可以让编译器检测到故障。 它还向任何读取代码表明这覆盖了现有方法或实现接口 – 告知它们当前行为以及重命名方法可能产生的影响。
此外,如果方法在不指定@Override
情况下 @Override
方法,则编译器可能会发出警告,这意味着您可以检测是否有人在没有您知道的情况下向超类添加了具有相同签名的方法 – 您可能不希望重写新方法,因为您现有的方法可能具有不同的语义。 虽然@Override
没有提供“取消覆盖”该方法的方法,但它至少突出了潜在的问题。
为了确保在编译时我们真正重写该方法,也为代码的可读性增加了很多
@Override
自JDK 1.5开始就存在,因此您可能会在之前收到警告
使用此注释,您可能确信您实际上覆盖了基本方法,而不是创建新方法(例如,意外地使用错误的参数)。 如果使用@Override
注释,如果出现问题,则会出现编译时错误。
在编译期间validation您实际上是否覆盖了方法。 IDE可以在您提供注释时立即告诉您。
- LG G3手机的Android 6.0 HTTPClient问题
- 使用Android支持库v7在Android Maven项目中的ActionBar
- Java无法在未调用Looper.prepare()的线程内创建处理程序
- WindowManager:MainActivity泄露了原始窗口com.android.internal.policy.impl.PhoneWindow$DecorView@40731aa0
- 如何在命名空间之间复制数据存储区实体
- Firebase列表适配器构造函数错误
- 文件路径Windows格式为java格式
- main()方法可以指定为private还是protected?
- 无法创建新会话。 (原始错误:’java -version’失败。错误:产生ENOENT)