Java @override报错的解决方法
今天在把 eclipse 工程拷贝到另一个电脑上的时候出现总是 @override 报错,提示是将 @override 移除就好了,但是项目中很多这个注解的存在,Java 小白的我觉的就算不知道这个编制存在与不存在的区别,但是既然存在了,肯定有他的用处,而且项目中有好多地方存在 @override,总不能全部移除吧。就查了一下,就此总结一下
出错原因:
开始以为是 jar 包引用的问题,尝试过更改 jar 包,没有用,才知道是 jdk 的问题,@Override 是 JDK5 就已经有了,但是不支持对接口的实现,认为这不是 Override 而报错。JDK6 修正了这个 Bug,无论是对父类的方法覆盖还是对接口的实现都可以加上 @Override。要解决该问题,首先要确保机器上安装了 jdk 1.6(其实此处我不确定这个确保问题呢,因为我电脑上只有 1.8 的版本,但是选择里没有 1.8,所有我还是按照教程选择了 1.6)
首先方法一:(我的工程上试过没有用呢)
选择 eclipse 菜单 Windows->Preferences-->java->Compiler-->compiler compliance level 选择 1.6,刷新工程,重新编译。
方法二:(问题解决)
在报错的工程上,鼠标右键选择 Properties-->Java Compiler-->compiler compliance level 中选择 1.6, 刷新工程,重新编译
扩展:Java 中的覆盖 @Override 注解 写与不写的一点点理解
- 一般来说,写与不写没什么区别,JVM 可以自识别
- 写的情况下:即说明子类要覆盖基类的方法,基类必须存在方法
- (控制类型 public,protected,返回值,参数列表类型)与子类方法完成一致的方法,否则会报错(找不到被 Override 的方法)。
- 在不写 @Override 注解的情况下,当基类存在与子类各种条件都符合的方法是即实现覆盖; 如果条件不符合时,则是当成新定义的方法使用。
- 所以如果想覆盖基类方法时,最好还是写上 @Override 注解,这样有利于编译器帮助检查错误