@override是jdk1.5增加的注解,主要是用来声明子类的某方法覆盖了父类的某方法。非常简单的注解,但是有个小问题:
项目最开始使用的是jdk1.6,mvc模式:接口 ----> 实现类。后来项目改成了jdk1.5,结果所有实现类上的有@override注解的方法全部报错,把@override注解删掉就好了。当时感觉比较怪,因为@override是jdk1.5的版本出来的,为什么1.5却不支持?
现在jdk1.5环境下,做如下测试:
1.提供一个接口和抽象类:
/*接口*/ interface MyInter{ public void say(); } /*抽象类*/ abstract class MyAbstract{ public abstract void read(); }
2.继承抽象类,实现接口:
问题出来了:覆盖接口的方法,编译不通过;而另外两个却通过了。
3.将环境换成jdk1.6,发现编译全部通过。
查阅了相关资料,发现:jdk1.5中并不支持接口方法的@override的覆盖。可能是觉得实现了接口,必定要实现方法,否则编译器一样会报错,这样的话,@override就显得多余了。但在jdk1.6中,扩展了,在接口的实现方法上加@override是合法的了。