首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java版本之间是否存在后向不兼容的具体示例?

Java版本之间是否存在后向不兼容的具体示例?
EN

Stack Overflow用户
提问于 2018-02-28 08:47:35
回答 2查看 0关注 0票数 0

在Java版本中,Java版本X的Java源代码/ Java类文件无法在版本Y(其中Y> X)下编译/运行的Java发行版之间是否存在不兼容?

“Java发行版”的意思是指以下版本:

  • JDK 1.0(1996年1月)
  • JDK 1.1(1997年2月)
  • J2SE 1.2(1998年12月)
  • J2SE 1.3(2000年5月)
  • J2SE 1.4(2002年2月)
  • J2SE 5.0(2004年9月)
  • Java SE 6(2006年12月)

家庭规则:

  • 请尽可能包含参考资料和代码示例。
  • 请在您的回答中尝试非常具体/具体。
  • 被标记为@Deprecated的类不算作向后兼容性。
EN

回答 2

Stack Overflow用户

发布于 2018-02-28 17:21:18

各种版本的兼容性说明:

我记得的第一个主要呃逆是assert在Java 1.4中引入的。它影响了很多JUnit代码

票数 0
EN

Stack Overflow用户

发布于 2018-02-28 18:16:06

首先,Sun实际上认为你提到的所有版本(当然是1.0除外)都是次要版本,而不是主要版本。

我当时并不知道任何二进制不兼容的例子。但是,有一些源不兼容的例子:

  • 在Java 5中,“enum”成为保留字; 这不是以前。因此,有源文件使用enum作为在java 1.4中编译的标识符,而这些标识符不会在java 5.0中编译。但是,你可以用-source 1.4进行编译来解决这个问题。
  • 向接口添加方法也会破坏源代码兼容性。如果您实现了一个接口,然后尝试使用向接口添加新方法的JDK编译该实现,则源文件将不再成功编译,因为它不会实现所有接口的成员。这经常发生在java.sql.Statement和其他jdbc接口上。这些“无效”实现的编译形式仍然可以工作,除非实际调用其中一种不存在的方法; 如果你这样做,将会抛出MissingMethodException。

这些是我可以从头顶回忆的几个例子,可能还有其他例子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档