![]() |
1
9
事实上是的
不
可以为较旧的JVM目标版本编译较新源版本的Java源文件。Oracles和OpenJDK
然而,有一些(非官方)工具可以将较新的源习惯用法或字节码编译成较旧的字节码版本。但这并不适用于标准库。如果你想使用更新的类,你必须自己提供它们。为此,标准库的特定部分有一些后端端口。 特别是关于您的注释问题: 我无法找到任何可靠的规范,说明如果JVM遇到无法检索类文件的带注释构造,应该/可能会发生什么情况(我搜索了 Java virtual machine specification SE 8 ). 然而,我在 Java language specification SE 8
这句话表明注释(存在或不存在)不应该对JVM的执行产生影响。因此,例外情况(例如
最后,尽管 this question
这相当清楚地表明,丢失的注释将 不会导致错误 如果你上课 有了Java 1.8标准库注释,它将(以某种方式)在Java 1.6 JVM上执行,而在Java 1.6 JVM上,注释只是不存在,那么该规范否认生成了任何错误。 我编写的以下测试也支持这一点:
如果编译,它将生成一个
因为这是应用于
|
![]() |
2
0
与任何类加载情况一样,如果不需要(或者更确切地说,不需要加载)该类,则该类在运行时是否不存在无关紧要。运行时注释通常有相同的问题,因为如果在运行时保留它们,通常意味着有基于它们的逻辑,这意味着它们的类也被加载。
|