static Object[] packVarArgs(Object[] args,
Class[] argTypes) {
int argsLen = args.length;
int typeLen = argTypes.length;
int fixArgsLen = typeLen - 1;
Object varArray = Array.newInstance(argTypes[fixArgsLen],
argsLen - fixArgsLen);
for (int i = fixArgsLen; i < argsLen; i++) {
Array.set(varArray, i - fixArgsLen, args[i]);
}
if(argsLen != typeLen) {
Object[] newArgs = new Object[typeLen];
System.arraycopy(args, 0, newArgs, 0, fixArgsLen);
args = newArgs;
}
args[fixArgsLen] = varArray;
return args;
}
|