先来看一下为什么要使用@Override
@Override不是Android的规范,是java 5新增的一个注解
官方解释为
(=)(=)public @interface Override
Indicates that a method declaration is intended to override a method declaration in a superclass. If a method is annotated with this annotation type but does not override a superclass method, compilers are required to generate an error message.
- Since:
- 1.5
表示这个方法声明是为了重写超类中的一个方法声明。如果一个方法声明为@Override但是没有覆盖超类方法,编译器会产生一个错误消息。
如果没有@Override,编译器会把该方法当成你自己的子类中自己增加的方法,是可以编译通过的。
在Android中,对于所有的Android Application和Activity @Override是很重要的,比如在Activity中,有从onCreate到onDestory的生命周期,如果你使用onCreate时没有加上@Override注释,它将永远不会被调用,程序可以编译通过,但是应用程序不会正常工作。
有时候导入一个Android项目,会提示去掉@Override
因为JDK1.5的编译器默认对父类的方法进行覆盖,使用@Override进行说明,但是1.6已经扩展到对接口的方法。对于JDK5.0/1.5版本来说,@Override注解只能用于对超类的方法重写,不能用在对接口方法的实现上。如果还是以1.5来编译的话,会出现错误。
解决办法:把编译器改为1.6
在项目名上右键,选Properties,或者在Window菜单中找到Preferences,找到Java Compiler,修改相应值
小技巧:可以在Source-> Override/Implement Methods下自动添加覆写和接口函数,可以确保函数名拼写正确。
注意:
Android里有一些系统自动调用的回调函数CallbackMethods,如果写的程序运行无错,但是就是没有该有的反应,那就可能是覆写回调函数时没有加@Override且函数名写错了。
参考: