< prev index next >

src/java.base/share/classes/java/lang/reflect/Executable.java

Print this page

        

*** 543,564 **** */ public abstract Annotation[][] getParameterAnnotations(); Annotation[][] sharedGetParameterAnnotations(Class<?>[] parameterTypes, byte[] parameterAnnotations) { int numParameters = parameterTypes.length; if (parameterAnnotations == null) return new Annotation[numParameters][0]; Annotation[][] result = parseParameterAnnotations(parameterAnnotations); ! if (result.length != numParameters) ! handleParameterNumberMismatch(result.length, numParameters); return result; } ! abstract void handleParameterNumberMismatch(int resultLength, int numParameters); /** * {@inheritDoc} * @throws NullPointerException {@inheritDoc} */ --- 543,574 ---- */ public abstract Annotation[][] getParameterAnnotations(); Annotation[][] sharedGetParameterAnnotations(Class<?>[] parameterTypes, byte[] parameterAnnotations) { + // System.out.println("\t Calling sharedGetParameterAnnotations"); int numParameters = parameterTypes.length; if (parameterAnnotations == null) return new Annotation[numParameters][0]; Annotation[][] result = parseParameterAnnotations(parameterAnnotations); + // System.out.println("\t" + java.util.Arrays.deepToString(result)); ! //System.out.println("\tresult.length " + ! // result.length + "\tnumParameters " + numParameters); ! if (result.length != numParameters && ! handleParameterNumberMismatch(result.length, numParameters)) { ! Annotation[][] tmp = new Annotation[result.length+1][]; ! // Shift annotations down one to account for an implicit leading parameter ! System.arraycopy(result, 0, tmp, 1, result.length); ! tmp[0] = new Annotation[0]; ! result = tmp; ! } return result; } ! abstract boolean handleParameterNumberMismatch(int resultLength, int numParameters); /** * {@inheritDoc} * @throws NullPointerException {@inheritDoc} */
< prev index next >