解决Android提示去掉@Override问题

先来看一下为什么要使用@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

posted @ 2012-09-18 13:07  时光独白  阅读(646)  评论(0编辑  收藏  举报