最佳答案
伟大的工程就是答案
Spring 4.x 引入了 Java 8 兼容性,而没有破坏其代码与 Java 6 和 Java 的二进制兼容性7.这意味着该框架是使用 Java 8 javac
编译的,但带有选项 -source 1.6 -target 1.6
。
这意味着 Spring 4.x 不使用任何 Java 8 语言功能(如 lambda),但可以通过谨慎使用 Java 8 SDK 中引入的类来使用。
在 org.springframework.core.StandardReflectionParameterNameDiscoverer
的源代码中,您可以注意到注释 @UsesJava8
,它注释了仅在 Java 8 时使用的类或更高版本 运行为 Java 6 编译的代码。
要查看这是一个 Action ,请注意使用该类的 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
。
关于java - StandardReflectionParameterNameDiscoverer 如何编译到 jdk 版本 50?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49172170/