答案 0 :(得分:1)
Spring 4.x 在不破坏其代码与 Java 6 和 Java的二进制兼容性的情况下引入了 Java 8 兼容性7 即可。这意味着该框架是使用 Java 8 javac
编译的,但使用选项-source 1.6 -target 1.6
。
这意味着 Spring 4.x 不使用任何Java 8语言功能(如lambdas),但可以通过谨慎使用它们来使用Java 8 SDK中引入的类。
在org.springframework.core.StandardReflectionParameterNameDiscoverer
的源代码中,您可以注意到注释@UsesJava8
的注释,该注释仅在 Java 8或更高版本运行为 Java 6 。
要查看此操作,请注意Spring框架使用此类的代码,例如DefaultNameParameterDiscoverer
:
private static final boolean standardReflectionAvailable =
(JdkVersion.getMajorJavaVersion() >= JdkVersion.JAVA_18);
public DefaultParameterNameDiscoverer() {
if (standardReflectionAvailable) {
addDiscoverer(new StandardReflectionParameterNameDiscoverer());
}
addDiscoverer(new LocalVariableTableParameterNameDiscoverer());
}
在Spring 4.x代码库中使用了更多 Java 8 API,如Optional
和Stream
。