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) { |