Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java StandardReflectionParameterNameDiscoveryr如何编译到jdk版本50?_Java_Spring_Spring Mvc_Jvm - Fatal编程技术网

Java StandardReflectionParameterNameDiscoveryr如何编译到jdk版本50?

Java StandardReflectionParameterNameDiscoveryr如何编译到jdk版本50?,java,spring,spring-mvc,jvm,Java,Spring,Spring Mvc,Jvm,我看到了org.springframework.core.StandardReflectionParameterNameDiscoveryr的字节码,它的版本是50。 但是它使用JDK1.8的方法:java.lang.reflect.Parameter。它是如何编译的? 伟大的工程就是答案 Spring4.x引入了Java8兼容性,但没有破坏其代码与Java6和Java7的二进制兼容性。这意味着该框架是使用Java8javac编译的,但带有选项-source 1.6-target 1.6 这意

我看到了org.springframework.core.StandardReflectionParameterNameDiscoveryr的字节码,它的版本是50。

但是它使用JDK1.8的方法:
java.lang.reflect.Parameter
。它是如何编译的?

伟大的工程就是答案 Spring4.x引入了Java8兼容性,但没有破坏其代码与Java6Java7的二进制兼容性。这意味着该框架是使用Java8
javac
编译的,但带有选项
-source 1.6-target 1.6

这意味着spring4.x不使用任何java8语言特性(如lambdas),但可以通过小心地保护它们的使用来使用java8sdk中引入的类

org.springframework.core.StandardReflectionParameterNameDiscoveryer
的源代码中,您可以注意到注释
@UsesJava8
,该注释仅在Java8或更高版本运行为Java6编译的代码时使用

要查看此操作,请注意使用此类的Spring框架代码,例如:

Spring4.x代码库中使用的Java 8API很少,比如
可选的

private static final boolean standardReflectionAvailable =
        (JdkVersion.getMajorJavaVersion() >= JdkVersion.JAVA_18);


public DefaultParameterNameDiscoverer() {
    if (standardReflectionAvailable) {
        addDiscoverer(new StandardReflectionParameterNameDiscoverer());
    }
    addDiscoverer(new LocalVariableTableParameterNameDiscoverer());
}