Method的invoke方法
注意:为了安全起见,此字段在此反射包外部均不可见。
AccessibleObject是Method,Field,Constructor的父类 可调用
setAccessible
方法改变,如果设置为true,则表示可以忽略访问权限的限制,直接调用。
便利方法来设置accessible标志对象的数组具有单个安全检查(效率)。 首先,如果有安全管理器,它checkPermission方法被称为一个ReflectPermission(“suppressAccessChecks”)的许可。 甲SecurityException如果升高flag是true ,但任何输入的元件中的可访问性array可以不改变(例如,如果元素对象是Constructor对象的类Class )。 在这样一个SecurityException的情况下,对象的可访问性被设置为flag数组元素高达(但不包括),用于其中发生异常的元件; 元件以外(并包括)该元素的对发生异常的可接近不变。
Reflection.quickCheckMemberAccess方法先检查是不是public的
如果不是再用Reflection.getCallerClass(1)方法获得到调用这个方法的Class,然后做是否有权限访问的校验,校验之后缓存一次,以便下次如果还是这个类来调用就不用去做校验了,直接用上次的结果
每个Method对象包含一个root对象
获得的Method对象相当于一个root的镜像,所有这些Method对象共享root里的MethodAccessor对象(这个对象由ReflectionFactory方法生成,ReflectionFactory对象在Method类中是static final的由native方法实例化)。
ReflectionFactory生成MethodAccessor
DelegatingMethodAccessorImpl 类对象就是一个代理对象,主要负责调用被代理对象 delegate 的 invoke() 方法
var1 就是控制器类 var2 就是 req 和 resp