What does the sun.reflect.CallerSensitive annotation mean?

在class.forName(String)中:

@CallerSensitive
public static Class<?> forName(String className)
            throws ClassNotFoundException {
    return forName0(className, true,
                    ClassLoader.getClassLoader(Reflection.getCallerClass()));
}

Reflection.getCallerClass()返回调用此方法的方法调用者的类,忽略关联的框架及其实现。
JVM将跟踪这个注释,该方法只能在使用该注释标记方法时才报告方法的调用方。
只有特权代码才能使用这个注释。如果代码通过引导类装入器或扩展类装入器装入,则具有特权。否则会抛出:

java.lang.InternalError: CallerSensitive annotation expected at frame 1
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容