你的位置:首页 > Java教程

[Java教程]JDK 1.5 1.6 override区别


今天在更新时发现有个别项目报错,报错信息

image

到网上搜索了之后,根据网上描述,修改了一批配置都不行:

http://bestchenwu.iteye.com/blog/997420(这个里面的方法二,即为我后面使用的办法)

http://blog.csdn.net/allenlinrui/article/details/5568817

http://blog.sina.com.cn/s/blog_6419bc670100i6hc.html

http://chen2337.blog.163.com/blog/static/34039920201041311718394/

最后问了一下同事,他说直接修改complier即可,

image

把上图中的1.5改成1.6后,再编译就没问题了,在Preferences里面设置所有项目的Compiler,所有项目异常都解决:

image

总结一下原因:

override(重写)这个关键字在1.5里面只能用于类的继承,不能用于接口的实现,应该说算是1.5的一个bug,如果是类的继承,方法前面可加可不加,JVM在编译的时候会默认是重写(Eclipse默认给加上);但如果是接口的实现,也就是说只有方法声明,没有方法体,方法前不能加这个注解,一旦加上这个注解,编译器在编译的时候就会报错,如下图说明

image

但是在1.6中,修复了这个问题,即可以用于接口的实现也可以用于类的继承,所以在1.6中,继承或实现接口时,在方法前面加或者不加@Override都默认认为是重写,Eclipse默认会给加上

@Override,如下图说明

image