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