文档章节

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

谦谦君子
 谦谦君子
发布于 2013/08/20 17:11
字数 138
阅读 688
收藏 0
点赞 0
评论 4

直接上代码吧,下面这段代码在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以后都可以编译通过。

© 著作权归作者所有

共有 人打赏支持
谦谦君子
粉丝 36
博文 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

解决@Override错误

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

中华大吉 ⋅ 2012/03/07 ⋅ 0

Eclipse Java @Override 报错

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

boonya ⋅ 2016/11/16 ⋅ 0

eclipse @override的统一处理

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

DURONG ⋅ 2013/03/21 ⋅ 0

Eclipse @override报错解决

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

iphoenix ⋅ 2016/10/10 ⋅ 0

Eclipse常见错误以及解决方案

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

messi_10 ⋅ 2015/11/27 ⋅ 0

Fedora 13 下编译Android 2.2

先到官网根据提示做点准备。 source.android.com/source/download.html 源码2.1G,加上编译后的文件需要6G左右的空间。CPU内存越快越多越好。如果在虚拟机里要求会更高些,CPU频率少于2G,内...

红薯 ⋅ 2010/08/08 ⋅ 0

eclipse中@Override报错的解决办法

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

hailshao ⋅ 2012/04/06 ⋅ 0

Java @Override报错问题解决方法

问题描述 在实现接口(interface)的时候,使用@Override这个注解会导致报错,错误提示:The method xx(xxxxx) of type xxxxx must override a superclass method 问题原因 jdk1.5下要使用@Ov...

守望者-圣堂刺客 ⋅ 2015/12/18 ⋅ 0

Java 8 - Interface Default Method接口默认方法

Java 8 相比于Java 7 推出了几大特色(features)(接口默认方法)default methods in interface, (接口静态方法)static method in interface, 函数编程(functional programming), lamda ex...

vjjy001 ⋅ 2016/09/28 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

IDEA创建SpringMVC+Mybatis+Maven项目

视频如下(加载有点慢请见谅,服务器不太好): 视频

影狼 ⋅ 25分钟前 ⋅ 0

前阿里P8架构师:精准定制Java架构师学习计划!

可以说,Java是现阶段中国互联网公司中,覆盖度最广的研发语言,掌握了Java技术体系,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能有立足之地。 有不少朋友问,除了掌握J...

java高级架构牛人 ⋅ 28分钟前 ⋅ 0

zookeper学习

https://blog.csdn.net/u012152619/article/category/6470028

~少司命~ ⋅ 29分钟前 ⋅ 0

Spring MVC ,JSON,JQuery,不懂JQuery,跳过了

/spring-mvc-study/src/main/webapp/course_json.jsp <%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD ......

颖伙虫 ⋅ 30分钟前 ⋅ 0

2018上海云栖大会workshop-日志数据采集与分析对接

摘要: 日志数据采集与分析对接 课程描述 通过日志服务采集用户、数据库、业务等访问数据。演示对于业务日志分析与处理,程序日志查询与监控,打通日志与数据仓库对接案例。 日志种类 网站访...

阿里云云栖社区 ⋅ 31分钟前 ⋅ 0

mahout demo

package com.datamine.CollaborativeFiltering.mysql; import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood; import org.apache.mahout.cf.taste.impl.recommend......

xiaomin0322 ⋅ 32分钟前 ⋅ 0

red hat openstack 12配置要求

安装 openstack 之前,一般要规划整个系统中,到底要多少台机器来参与openstack, 根据rhosp12的官方文档: 最低要求是3台物理机,1台作为director,一台作为 controller ,一台作为computer....

tututu_jiang ⋅ 33分钟前 ⋅ 0

Rocket-Chip在GitHub上的各个源码

在github上通过搜索Rocket-chip可以得到36个结果:其中 https://github.com/freechipsproject/rocket-chip https://github.com/ucb-bar/riscv-boom https://github.com/ucb-bar/fpga-zynq (......

whoisliang ⋅ 39分钟前 ⋅ 0

【HAVENT原创】CentOS 6.5 下 Nginx 的安装与配置

nginx是轻量级的Web服务器、反向代理服务器及邮件服务器,具有占用内存少,并发能力强的优点,已被广泛应用。本文介绍目前最新版本 1.12.2 的安装。 各版本nginx下载地址:http://nginx.org/...

HAVENT ⋅ 45分钟前 ⋅ 0

查看linux系统重启之前的log -- last_kmsg

当 Linux Kernel 出现 BUG 的时候,后走入 panic flow,这个时候由于 Kernel 出现了严重的问题,adbd 也无法响应 adb 连接请求,这个时候想透过读取 Kernel Log Buffer 来看 Kernel Log 是不...

zyzzu ⋅ 46分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部