文档章节

@Override在jdk5下用在interface上编译不过

谦谦君子
 谦谦君子
发布于 2013/08/20 17:11
字数 138
阅读 690
收藏 0

直接上代码吧,下面这段代码在jdk5可以编译通过

abstract class TestOverride {
	abstract void toOverride() throws Exception;
}

public class TestInterfaceOverride {

	public static void main(String[] args) throws Exception {
		TestOverride testOverride = new TestOverride() {

			@Override
			public void toOverride() throws Exception {
				System.out.println("xxx");

			}
		};
		testOverride.toOverride();
	}
}
下面这段代码在jdk5下编译不过,提示“The method toOverride() of type new TestOverride(){} must override a superclass method”
interface TestOverride {
	void toOverride() throws Exception;
}

public class TestInterfaceOverride {

	public static void main(String[] args) throws Exception {
		TestOverride testOverride = new TestOverride() {

			@Override
			public void toOverride() throws Exception {
				System.out.println("xxx");

			}
		};
		testOverride.toOverride();
	}
}
但是两段代码在jdk6以后都可以编译通过。

© 著作权归作者所有

共有 人打赏支持
谦谦君子
粉丝 37
博文 59
码字总数 50480
作品 0
成都
程序员
加载中

评论(4)

谦谦君子
谦谦君子

引用来自“红薯”的评论

JDK 5 不支持接口上的 @Override

嗯,谢谢老大的回复哈~~
谦谦君子
谦谦君子

引用来自“mononite”的评论

@Override在JDK5引入的时候,要解决的问题是避免重写父类方法出现错误,比如拼写错误,或者是用了错误的方法签名,如果没有@Override编译器是没办法提示出错的。这个问题对接口来说是不存在的,没有正确重写接口的方法,没有@Override也能报错。所以JDK5里不允许在接口方法加@Override应该是刻意的。
但在实际项目里,接口里的方法不仅会添加和修改,也会删除,如果删除了接口已有的方法,那没有简单的办法去删除已有实现类中的多余方法,而接口方法如果能用@Override,那就很容易了,所以JDK6里允许@Override用在接口方法上,是更务实的一种做法,也不难理解。

解释得很详细,受教了,谢谢~~
m
mononite
@Override在JDK5引入的时候,要解决的问题是避免重写父类方法出现错误,比如拼写错误,或者是用了错误的方法签名,如果没有@Override编译器是没办法提示出错的。这个问题对接口来说是不存在的,没有正确重写接口的方法,没有@Override也能报错。所以JDK5里不允许在接口方法加@Override应该是刻意的。
但在实际项目里,接口里的方法不仅会添加和修改,也会删除,如果删除了接口已有的方法,那没有简单的办法去删除已有实现类中的多余方法,而接口方法如果能用@Override,那就很容易了,所以JDK6里允许@Override用在接口方法上,是更务实的一种做法,也不难理解。
红薯
红薯
JDK 5 不支持接口上的 @Override
[java]@override 报错处理

有时候在自己电脑上编译通过的java代码,在别人那里却编译不通过,总是@override报错,把@override去掉就好了,但不能从根本上解决问题。 据说这是jdk的问题,@Override是JDK5就已经有了,但...

亭子happy
2012/10/24
0
0
Eclipse Java @Override 报错

笨办法 把@override去掉就好了,但不能从根本上解决问题,因为有时候有@override的地方超级多。 这是jdk的问题,@Override是JDK5就已经有了,但是不支持对接口的实现,认为这不是Override而报...

boonya
2016/11/16
6
0
Eclipse @override报错解决

我想这个问题肯定困扰了很多人,我也不例外。新公司用的东西多多少少会与我们以前公司的有所不同。所以这个问题也时常伴随在我们身边。 第一种解决方案: @Override是JDK5 就已经有了,但有个...

iphoenix
2016/10/10
5
0
eclipse @override的统一处理

第一种解决方案: @Override是JDK5 就已经有了,但有个小小的Bug,就是不支持对接口的实现,认为这不是Override 而JDK6 修正了这个Bug,无论是对父类的方法覆盖还是对接口的实现都可以加上@...

DURONG
2013/03/21
0
0
Eclipse常见错误以及解决方案

Eclipse常见错误以及解决方案 错误一 :The type java.lang.Object cannot be resolved.It is indirectly referenced from required.class files 解决方案 : 出现以上信息的原因是因为你装了...

messi_10
2015/11/27
30
0

没有更多内容

加载失败,请刷新页面

加载更多

一步步编写自己的PHP爬取代理IP项目(二)

这一章节我们正式开展我们的爬虫项目,首先我们先要知道哪个网站能获取到免费代理IP,目前比较火的有西刺代理,快代理等,这里我们拿西刺代理作为例子。 这里就是一个个免费的IP地址以及各自...

NateHuang
24分钟前
1
0
11-利用思维导图梳理JavaSE-Java的反射机制

11-利用思维导图梳理JavaSE-Java的反射机制 主要内容 1.反射与Class类 1.1.反射概念 1.2.Class类 1.3.实例化Class类 1.4.反射的作用 1.5.Class对象的作用 2.反射的深入应用 2.1.调用无参的成...

飞鱼说编程
31分钟前
1
0
How to serve the world from home computer?

最近在开发web应用,很想知道,通过公网来访问,效果会不会好。今天在做家务的时候,突然想到,如果我自己写一个ip转发的工具,不就可以实现了吗?但是转过头一想,这么大众的想法,怎么会没...

pearma
47分钟前
1
0
今天在码云遇到一个很有意思的人 for Per.js

今天在码云遇到一个很有意思的人,他在我的Per.js项目下面评论了一句,大意为“你试试这句代码,看看速度到底是你快还是Vue快”【当然,这个评论被我手残不小心删掉了...】。 然后我就试了,...

Skyogo
今天
50
0
Java -------- 首字母相关排序总结

Java 字符串数组首字母排序 字符串数组按首字母排序:(区分大小写) String[] strings = new String[]{"ba","aa","CC","Ba","DD","ee","dd"}; Arrays.sort(strings); for (int i ...

切切歆语
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部