@override在jdk1.5和jdk1.6中的不同表现
来源:互联网 发布:全球根域名服务器 编辑:程序博客网 时间:2024/06/01 08:37
Parent.java
public class Parent...{
public void parentMethod() ...{
}
}
IChild.java
public interface IChild ...{
void interfaceMethod();
}
Child.java
public class Child extends Parent implements IChild ...{
@Override
public void parentMethod() ...{
}
@Override
public void interfaceMethod() ...{
}
}
由于代码很简单,我就不做说明
上述代码在jdk6下可以编译通过
而在jdk5下编译无法通过,输出的错误信息如下:
Child.java:7: 方法未覆盖其父类的方法
@Override
^
1 错误
上面的错误信息说在Child.java第七行的Override注解是不对的,不对的原因是该方法(interfaceMethod)不是父类方法。
当然,实际上这个方法是类实现的接口中方法,但是,这个语法的jdk6的下面是可以通过的,也就是说java6认为类覆盖父类方法与实现接口方法都叫override,而jdk5不是这样认为的,不知道这是当初jdk5的bug,还是当初就是认为覆盖父类方法与实现接口方法是不一样的,不得而知。但是从OO角度来看,覆盖父类方法与实现接口方法都可以认为override,因为他们目的都是一样的,都是为了重用,都是多态的一种表现方式。这从jdk6的支持这个功能就可以看出。
差一点忘了:
标准的java api文档java5与java6对Override annotation的的解释一样的
java5:
Indicates that a method declaration is intended to override a methoddeclaration in a superclass. If a method is annotated with thisannotation type but does not override a superclass method, compilersare required to generate an error message.
java6:
Indicates that a method declaration is intended to override a methoddeclaration in a superclass. If a method is annotated with thisannotation type but does not override a superclass method, compilersare required to generate an error message.
两段说明一模一样,让人搞不清楚的是java6文档没有提到Override对interface的支持。
- @override在jdk1.5和jdk1.6中的不同表现
- JDK1.5 和 JDK1.6 的一点小区别 @Override
- jdk1.5和jdk1.6对于@override支持的区别
- JDK1.5和JDK1.6关于@Override注释的区别
- jdk1.6 和 jdk1.7中的 substring(ing begin int end)的不同
- jdk1.4,jdk1.5和jdk1.6的区别
- jdk1.4,jdk1.5和jdk1.6的区别-笔记
- jdk1.4,jdk1.5和jdk1.6的区别
- jdk1.4,jdk1.5和jdk1.6的区别
- jdk1.4,jdk1.5和jdk1.6的区别
- JDK1.5中@Override注记报错
- jdk1.5与jdk1.6关于@overwrite的不同
- Java中substring方法在jdk1.6和jdk1.7中的区别
- JDK1.1 JDK1.2 JDK1.3 JDK1.4 JDK1.5 JDK1.6 JDK1.7
- JDK1.6,JDK1.5官方下载|JDK1.6和JDK1.5中文CHM中文API下载
- jdk1.4 jdk1.5 jdk1.6 jdk1.7
- jdk1.4 jdk1.5 jdk1.6 jdk1.7
- jdk1.5 jdk1.6 jdk1.7 jdk1.8 特性
- 关于如何删除数据库中重复记录
- 瑞斯康达NView 5 研究实录 (3) - 运行分析
- HDU1022(精简代码)
- 边缘检测
- JavaScript内置对象及其方法
- @override在jdk1.5和jdk1.6中的不同表现
- JSP弹出窗口和模式对话框
- JavaScript常用代码集锦
- itoa与sprintf实现类型转换
- apache2.2下编译安装mod_auth_mysql的补丁
- OMAP3530 平台WINCE移植(大家相互交流)
- 相关资料
- Ruby private 关键字
- 去掉esc键在页面中的作用