jdk/src/share/classes/java/lang/reflect/Method.java
changeset 16906 44dfee24cb71
parent 16743 b0b34102bb4c
child 20482 6dc1f81f522c
equal deleted inserted replaced
16905:0419f45c7761 16906:44dfee24cb71
    23  * questions.
    23  * questions.
    24  */
    24  */
    25 
    25 
    26 package java.lang.reflect;
    26 package java.lang.reflect;
    27 
    27 
       
    28 import sun.reflect.CallerSensitive;
    28 import sun.reflect.MethodAccessor;
    29 import sun.reflect.MethodAccessor;
    29 import sun.reflect.Reflection;
    30 import sun.reflect.Reflection;
    30 import sun.reflect.generics.repository.MethodRepository;
    31 import sun.reflect.generics.repository.MethodRepository;
    31 import sun.reflect.generics.factory.CoreReflectionFactory;
    32 import sun.reflect.generics.factory.CoreReflectionFactory;
    32 import sun.reflect.generics.factory.GenericsFactory;
    33 import sun.reflect.generics.factory.GenericsFactory;
   470      * @exception NullPointerException      if the specified object is null
   471      * @exception NullPointerException      if the specified object is null
   471      *              and the method is an instance method.
   472      *              and the method is an instance method.
   472      * @exception ExceptionInInitializerError if the initialization
   473      * @exception ExceptionInInitializerError if the initialization
   473      * provoked by this method fails.
   474      * provoked by this method fails.
   474      */
   475      */
       
   476     @CallerSensitive
   475     public Object invoke(Object obj, Object... args)
   477     public Object invoke(Object obj, Object... args)
   476         throws IllegalAccessException, IllegalArgumentException,
   478         throws IllegalAccessException, IllegalArgumentException,
   477            InvocationTargetException
   479            InvocationTargetException
   478     {
   480     {
   479         if (!override) {
   481         if (!override) {
   480             if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
   482             if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
   481                 Class<?> caller = Reflection.getCallerClass(1);
   483                 Class<?> caller = Reflection.getCallerClass();
   482 
       
   483                 checkAccess(caller, clazz, obj, modifiers);
   484                 checkAccess(caller, clazz, obj, modifiers);
   484             }
   485             }
   485         }
   486         }
   486         MethodAccessor ma = methodAccessor;             // read volatile
   487         MethodAccessor ma = methodAccessor;             // read volatile
   487         if (ma == null) {
   488         if (ma == null) {