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

你可能感兴趣的:(What does the sun.reflect.CallerSensitive annotation mean?)