您的位置:首页 > 移动开发 > Android开发

解决Android提示去掉@Override问题

2012-09-18 13:07 148 查看
先来看一下为什么要使用@Override

@Override不是Android的规范,是java 5新增的一个注解

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Override.html官方解释为

@Target(value=METHOD)
@Retention(value=SOURCE)
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且函数名写错了。

参考:

http://stackoverflow.com/questions/8545540/why-override-needed-in-java-or-android

http://www.cnblogs.com/kaierwen/archive/2012/04/19/2456594.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐