关于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,如需转载请自行联系原作者

相关文章
|
1月前
|
Java
让星星⭐月亮告诉你,jdk1.8 Java函数式编程示例:Lambda函数/方法引用/4种内建函数式接口(功能性-/消费型/供给型/断言型)
本示例展示了Java中函数式接口的使用,包括自定义和内置的函数式接口。通过方法引用,实现对字符串操作如转换大写、数值转换等,并演示了Function、Consumer、Supplier及Predicate四种主要内置函数式接口的应用。
25 1
|
2月前
|
编解码 安全 Java
jdk8新特性-接口和日期处理
jdk8新特性-接口和日期处理
|
3月前
|
API
JDK8的stream有求和方法吗?
【8月更文挑战第20天】JDK8的stream有求和方法吗?
123 3
|
3月前
|
Java
JDK序列化原理问题之Hessian框架不支持writeObject/readObject方法如何解决
JDK序列化原理问题之Hessian框架不支持writeObject/readObject方法如何解决
|
3月前
|
Oracle 安全 Java
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
|
3月前
|
Java Maven 容器
JDK版本特性问题之想使用接口中的私有方法,如何实现
JDK版本特性问题之想使用接口中的私有方法,如何实现
JDK版本特性问题之想使用接口中的私有方法,如何实现
|
3月前
|
Java API
JDK版本特性问题之使用 ofNullable 方法来预防 NullPointerException,如何解决
JDK版本特性问题之使用 ofNullable 方法来预防 NullPointerException,如何解决
|
5月前
|
Java 编译器
Java健壮性 Java可移植性 JDK, JRE, JVM三者关系 Java的加载与执行原理 javac编译与JAVA_HOME环境变量介绍 Java中的注释与缩进 main方法的args参数
Java健壮性 Java可移植性 JDK, JRE, JVM三者关系 Java的加载与执行原理 javac编译与JAVA_HOME环境变量介绍 Java中的注释与缩进 main方法的args参数
51 1
|
5月前
|
Java
JavaSE——JDk8新特性(1/2):Lambda表达式(具体实现、函数式接口、简化setAll、Comparator),Lambda表达式的省略写法
JavaSE——JDk8新特性(1/2):Lambda表达式(具体实现、函数式接口、简化setAll、Comparator),Lambda表达式的省略写法
58 1
|
5月前
|
Java
JDK 1.8 函数接口(收藏用)
JDK 1.8 函数接口(收藏用)