小谈@override

  @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是合法的了。

posted @ 2014-03-05 10:35  楪夕  阅读(274)  评论(0编辑  收藏  举报