Java @Override报错问题解决方法

北城余情 提交于 2019-12-04 17:54:54

问题描述

    在实现接口(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,刷新工程,重新编译。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!