JDK 1.5 与 1.6 中的@Override

遇到一个奇怪的问题:最近在维护一个老项目,添加了一点新功能,结果在本地打包上传到生产环境,报java.lang.UnsupportedClassVersionError:  Bad version number in .class file。java

    固然一看到这个错误我就知道是由于JDK的版本不一致。我查看开发环境打包的JDK是1.6,而生产环境是JDK 1.5;我就安装了一个JDK 1.5,从新用1.5打包,打包成功,上传到生产环境。结果仍是同样的异常。这我就纳闷了:这期间我折腾了好久,把JDK 1.6 卸载了,怕他有影响,结果仍是没用。eclipse

   后来我一想,是否是新添加的代码在1.5中不兼容,实现接口的方法上也加上了@Override注解(IDE eclipse自动帮助加上的);我把实现接口方法上的注解去掉用JDK 1.6 打包上传到生产环境,居然正常了!ide

   原来JDK 1.6 和 1.6@Override上在有这么一点细微的差异:在方法的继承(类的继承)上使用@Override都是没问题,但在方法的实现(接口的实现)上使用@Override要在1.6或更高的版本上才能够。若是没有使用什么特别的功能JDK通常仍是向后兼容的。继承

   @Override促使咱们在编译期发现错误,让咱们明确的知道本身要实现或覆盖的方法,使代码更规范。接口

相关文章
相关标签/搜索