src/share/classes/java/lang/reflect/Method.java

Print this page

        

*** 59,76 **** * @author Nakul Saraiya */ public final class Method extends AccessibleObject implements GenericDeclaration, Member { ! private Class clazz; private int slot; // This is guaranteed to be interned by the VM in the 1.4 // reflection implementation private String name; ! private Class returnType; ! private Class[] parameterTypes; ! private Class[] exceptionTypes; private int modifiers; // Generics and annotations support private transient String signature; // generic info repository; lazily initialized private transient MethodRepository genericInfo; --- 59,76 ---- * @author Nakul Saraiya */ public final class Method extends AccessibleObject implements GenericDeclaration, Member { ! private Class<?> clazz; private int slot; // This is guaranteed to be interned by the VM in the 1.4 // reflection implementation private String name; ! private Class<?> returnType; ! private Class<?>[] parameterTypes; ! private Class<?>[] exceptionTypes; private int modifiers; // Generics and annotations support private transient String signature; // generic info repository; lazily initialized private transient MethodRepository genericInfo;
*** 83,94 **** // potentially many Method objects pointing to it.) private Method root; // More complicated security check cache needed here than for // Class.newInstance() and Constructor.newInstance() ! private Class securityCheckCache; ! private Class securityCheckTargetClassCache; // Generics infrastructure private String getGenericSignature() {return signature;} --- 83,94 ---- // potentially many Method objects pointing to it.) private Method root; // More complicated security check cache needed here than for // Class.newInstance() and Constructor.newInstance() ! private Class<?> securityCheckCache; ! private Class<?> securityCheckTargetClassCache; // Generics infrastructure private String getGenericSignature() {return signature;}
*** 112,126 **** /** * Package-private constructor used by ReflectAccess to enable * instantiation of these objects in Java code from the java.lang * package via sun.reflect.LangReflectAccess. */ ! Method(Class declaringClass, String name, ! Class[] parameterTypes, ! Class returnType, ! Class[] checkedExceptions, int modifiers, int slot, String signature, byte[] annotations, byte[] parameterAnnotations, --- 112,126 ---- /** * Package-private constructor used by ReflectAccess to enable * instantiation of these objects in Java code from the java.lang * package via sun.reflect.LangReflectAccess. */ ! Method(Class<?> declaringClass, String name, ! Class<?>[] parameterTypes, ! Class<?> returnType, ! Class<?>[] checkedExceptions, int modifiers, int slot, String signature, byte[] annotations, byte[] parameterAnnotations,
*** 353,364 **** if ((getDeclaringClass() == other.getDeclaringClass()) && (getName() == other.getName())) { if (!returnType.equals(other.getReturnType())) return false; /* Avoid unnecessary cloning */ ! Class[] params1 = parameterTypes; ! Class[] params2 = other.parameterTypes; if (params1.length == params2.length) { for (int i = 0; i < params1.length; i++) { if (params1[i] != params2[i]) return false; } --- 353,364 ---- if ((getDeclaringClass() == other.getDeclaringClass()) && (getName() == other.getName())) { if (!returnType.equals(other.getReturnType())) return false; /* Avoid unnecessary cloning */ ! Class<?>[] params1 = parameterTypes; ! Class<?>[] params2 = other.parameterTypes; if (params1.length == params2.length) { for (int i = 0; i < params1.length; i++) { if (params1[i] != params2[i]) return false; }
*** 408,425 **** sb.append(Modifier.toString(mod) + " "); } sb.append(Field.getTypeName(getReturnType()) + " "); sb.append(Field.getTypeName(getDeclaringClass()) + "."); sb.append(getName() + "("); ! Class[] params = parameterTypes; // avoid clone for (int j = 0; j < params.length; j++) { sb.append(Field.getTypeName(params[j])); if (j < (params.length - 1)) sb.append(","); } sb.append(")"); ! Class[] exceptions = exceptionTypes; // avoid clone if (exceptions.length > 0) { sb.append(" throws "); for (int k = 0; k < exceptions.length; k++) { sb.append(exceptions[k].getName()); if (k < (exceptions.length - 1)) --- 408,425 ---- sb.append(Modifier.toString(mod) + " "); } sb.append(Field.getTypeName(getReturnType()) + " "); sb.append(Field.getTypeName(getDeclaringClass()) + "."); sb.append(getName() + "("); ! Class<?>[] params = parameterTypes; // avoid clone for (int j = 0; j < params.length; j++) { sb.append(Field.getTypeName(params[j])); if (j < (params.length - 1)) sb.append(","); } sb.append(")"); ! Class<?>[] exceptions = exceptionTypes; // avoid clone if (exceptions.length > 0) { sb.append(" throws "); for (int k = 0; k < exceptions.length; k++) { sb.append(exceptions[k].getName()); if (k < (exceptions.length - 1))
*** 588,599 **** throws IllegalAccessException, IllegalArgumentException, InvocationTargetException { if (!override) { if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) { ! Class caller = Reflection.getCallerClass(1); ! Class targetClass = ((obj == null || !Modifier.isProtected(modifiers)) ? clazz : obj.getClass()); boolean cached; synchronized (this) { --- 588,599 ---- throws IllegalAccessException, IllegalArgumentException, InvocationTargetException { if (!override) { if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) { ! Class<?> caller = Reflection.getCallerClass(1); ! Class<?> targetClass = ((obj == null || !Modifier.isProtected(modifiers)) ? clazz : obj.getClass()); boolean cached; synchronized (this) {
*** 700,712 **** */ public Annotation[] getDeclaredAnnotations() { return AnnotationParser.toArray(declaredAnnotations()); } ! private transient Map<Class, Annotation> declaredAnnotations; ! private synchronized Map<Class, Annotation> declaredAnnotations() { if (declaredAnnotations == null) { declaredAnnotations = AnnotationParser.parseAnnotations( annotations, sun.misc.SharedSecrets.getJavaLangAccess(). getConstantPool(getDeclaringClass()), getDeclaringClass()); --- 700,712 ---- */ public Annotation[] getDeclaredAnnotations() { return AnnotationParser.toArray(declaredAnnotations()); } ! private transient Map<Class<? extends Annotation>, Annotation> declaredAnnotations; ! private synchronized Map<Class<? extends Annotation>, Annotation> declaredAnnotations() { if (declaredAnnotations == null) { declaredAnnotations = AnnotationParser.parseAnnotations( annotations, sun.misc.SharedSecrets.getJavaLangAccess(). getConstantPool(getDeclaringClass()), getDeclaringClass());
*** 729,739 **** * @since 1.5 */ public Object getDefaultValue() { if (annotationDefault == null) return null; ! Class memberType = AnnotationType.invocationHandlerReturnType( getReturnType()); Object result = AnnotationParser.parseMemberValue( memberType, ByteBuffer.wrap(annotationDefault), sun.misc.SharedSecrets.getJavaLangAccess(). getConstantPool(getDeclaringClass()), --- 729,739 ---- * @since 1.5 */ public Object getDefaultValue() { if (annotationDefault == null) return null; ! Class<?> memberType = AnnotationType.invocationHandlerReturnType( getReturnType()); Object result = AnnotationParser.parseMemberValue( memberType, ByteBuffer.wrap(annotationDefault), sun.misc.SharedSecrets.getJavaLangAccess(). getConstantPool(getDeclaringClass()),