我已经搜索了所有关于为什么我们应该有与目标不同的源代码的答案,但没有一个令人信服:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.7</source>
<target>1.8</target>
</configuration>
</plugin>
如果JDK向后兼容,为什么编译在1.7上时需要将目标设置为1.8?
将源设置得比目标高是行不通的,例如错误的例子:
源版本8需要目标版本1.8。
此外,从Maven中可以看到:
仅仅设置目标选项并不能保证你的代码能够在指定版本的JRE上运行。陷阱就是无意中使用了只存在于后来的JRE中的API,这会导致你的代码在运行时出现链接错误。
有人能给个例子吗?Maven的源和目标是针对我的源代码而不是依赖项的,那么我在自己的代码中编译成功后,什么情况下可以使用后来JRE中的API呢?