这是第二次遇到这个问题了,虽说是一个普通的问题,但还是记下来比较好:
索性将 @override 删除掉,问题解决,其实并不知道根源是什么。今天碰到同样的问题,似曾相识。。。赶快做个记录:
报错原因:
JDK 1.5 之前,@override 就已经存在,但是不支持对接口的实现。所以会报错,JDK 1.6 修复了这个 Bug, 无论是覆盖父类的方法还是实现接口的方法,都可以加 @override;
解决方法:
安装 1.6 版本以上 JDK,Window ——> Preference ——> Compiler,在 Compile compliance level 中选择 对应的版本,刷新项目,重新编译,问题解决。
注:
1. @override 的作用:a. 可以起到注释作用,方便阅读;b. 可以起到校验的作用,验证程序员编码的正确性,如果 @override 标注的方法并不是父类(或接口)的方法,会报错。这么来说,@override 的标注其实可有可无;
2. build path 中的 JDK 版本和 Compile 中的 Compile compliance level 的区别:build path 里面是 class 文件的运行环境级别,编译器需要使用到的;而 Compile compliance level 是指定编写好的源码按照什么 JDK 级别进行编译。