为什么不建议调用sun包,如何通过其他方法确定调用者
1个回答
展开全部
类似的, JDK8 中的 @java.lang.Class 的 forName(className) 方法也加了这个注解,因为forName方法里面也调用给到了Reflection.getCallerClass()
Oracle建议开发人员不要使用sun包,但是有一系列的项目都依赖于getCallerClass()方法,如Jigsaw和Lambda,Intellij IDEA。在spring-loaded的源码这里也调用了getCallerClass()方法,作为临时的方案去兼容JDK 7u25,需要添加系统属性:jdk.reflect.allowGetCallerClass
其实查看JDK 7 Reflection的字节码可以发现对这个属性的处理逻辑:
public static java.lang.Class getCallerClass(int arg0);
Oracle建议开发人员不要使用sun包,但是有一系列的项目都依赖于getCallerClass()方法,如Jigsaw和Lambda,Intellij IDEA。在spring-loaded的源码这里也调用了getCallerClass()方法,作为临时的方案去兼容JDK 7u25,需要添加系统属性:jdk.reflect.allowGetCallerClass
其实查看JDK 7 Reflection的字节码可以发现对这个属性的处理逻辑:
public static java.lang.Class getCallerClass(int arg0);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询