关于Override在JDK1.5和JDK1.6上子类实现接口中方法使用@Override注解编译错误.

简介:

遇到这个问题说来也怪.新开了一个path的工作空间用来打patch.该Eclipse的默认全局的编译版本是1.6.但是唯独其中的一个插件项目的版本是1.5(可能是唯一的一个,不确定,不知道为什么会是这样)

然后这个插件中编译错误,该编译错误就是这个Override注解的使用.

一开始秉承同事告诉我的"只要保证全局Eclipse编译版本是1.6就可以",具体的插件版本如果不同不需要修改的原则.打patch,通过产品测试之后发现.如果不解决下面关于Override的问题就会报在编译中报出的bug.(具体的异常信息就是使用了Override但是父类中却没有对应的方法.)

通过这个问题也可以知道如果对应的java文件有编译错误的话是不能打用其class文件进行打patch的.

 

 

Override注解既可以用在实现类对其父类方法的重写,也可以用于实现类对其实现接口中方法的重写.

但是在JDK1.6之前如果在实现接口的方法上部加上@Override注解的话,Eclipse编译是会报错的.

 JDK1.5: 
当继承一个类,并对其中的方法重写的时,需要加这个注释。 实现接口的时候不能加,加上Eclipse编译报错。 

JDK1.6: 
继承类重写方法,或者实现接口的时候,都会带上@Override  

只是开发中发现的,没有看到官方文档对此的说明.

附图:

&

如果把编译环境变成1.6+就没有改问题了.

 

//==================================================================

看书之后补充:

在Java1.5版本上编译代码就会出现如下错误:

The method *****() of type **** must override a superclass method ****.java

注意,这是个错误,不能继续编译,原因是1.5版本中的@Override是严格遵守覆写的定义:子类方法与父类方法必须具有相同的方法名,输入参数,输出参数(允许子类缩小),访问权限(允许子类扩大),父类必须是一个类,不能是一个接口,否则不能算是覆写.

而在Java1.6就开放了很多,实现接口的方法也可以加上@Override注解了,可以避免粗心大意导致方法名称与接口不一致的情况发生.

在多环境部署应用时,需要考虑@Override在不同版本下代表的意义,如果是Java1.6版本移植到1.5版本环境中,就需要删除实现接口方法上的@Override注解.

本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/4692805.html,如需转载请自行联系原作者

相关文章
|
5月前
|
API
JDK8函数式接口之UnaryOperator
JDK8函数式接口之UnaryOperator
32 0
|
5月前
|
API
JDK8函数式接口之BiConsumer
JDK8函数式接口之BiConsumer
65 0
|
4天前
|
Java
【JAVA进阶篇教学】第四篇:JDK8中函数式接口
【JAVA进阶篇教学】第四篇:JDK8中函数式接口
|
3月前
|
Java 开发者
JDK 9新特性探秘:接口中的私有方法
本文旨在探讨Java Development Kit 9(JDK 9)为Java接口引入的新特性——私有方法。在JDK 9之前,接口只能包含公共的抽象方法和常量。然而,随着Java的不断发展,接口中需要更加灵活的方式来处理复杂性和代码重用。因此,JDK 9引入了私有方法,允许开发者在接口内部定义私有方法和私有静态方法,从而提高了代码的模块性和可维护性。本文将详细介绍这一新特性的使用方法、应用场景及其对Java编程的影响。
|
3月前
|
Java 开发者
JDK 8:函数式接口的新篇章
JDK 8引入了函数式接口,这一新特性为Java开发者带来了巨大的便利。本文将深入探讨函数式接口的原理、优势以及如何在实际开发中应用这一特性。
|
4月前
|
存储 Java 关系型数据库
JDK8中的新特性(Lambda、函数式接口、方法引用、Stream)(二)
JDK8中的新特性(Lambda、函数式接口、方法引用、Stream)(二)
|
4月前
|
JavaScript 前端开发 Java
JDK8中的新特性(Lambda、函数式接口、方法引用、Stream)(一)
JDK8中的新特性(Lambda、函数式接口、方法引用、Stream)(一)
|
4月前
|
Java
重学JDK8新特性之Lambda、函数式接口、接口新增方法、方法引用
重学JDK8新特性之Lambda、函数式接口、接口新增方法、方法引用
39 0
|
5月前
|
API
JDK8函数式接口之BiPredicate
JDK8函数式接口之BiPredicate
37 0
|
5月前
|
API
JDK8函数式接口之BinaryOperator
JDK8函数式接口之BinaryOperator
26 0