问题描述
在实现接口(interface)的时候,使用@Override这个注解会导致报错,错误提示:The method xx(xxxxx) of type xxxxx must override a superclass method
问题原因
jdk1.5下要使用@Override这个注解必须保证被标注方法来源于class而不是interface,也就是说,在jdk1.5下,实现interface的方法是不支持使用@Override这个注解的,验证代码如下:
public class OverrideTest {
public abstract class ParentClass {
public abstract void test();
}
ParentClass pc = new ParentClass() {
@Override
public void test() { // 没有报错
}
};
public interface ParentInterface {
public void test();
};
ParentInterface pi = new ParentInterface() {
@Override
public void test() { // 报错
}
};
}
解决方案
1、把接口实现方法使用的@Override全部删除(如果有N多个@Override的话,我觉得 ... ^_^);
2、修改编译的jdk版本(比较省时,省力的方式):
目前这个问题在jdk1.6以上版本都做了修改,所有把jdk改为1.6以上版本就OK了,针对我使用的Eclipse修改java编译器为jdk1.6方式如下:
(1) 首先要确保机器上安装了jdk 1.6;
(2) 选择eclipse菜单Windows->Preferences-->java->Compiler-->compiler compliance level选择 1.6,刷新工程,重新编译;
(3) 如果问题还没解决,就在报错的工程上,鼠标右键选择 Properties-->Java Compiler-->compiler compliance level 中选择 1.6,刷新工程,重新编译。
来源:oschina
链接:https://my.oschina.net/u/656588/blog/547224