/** * Does parameter types match for var args invocation. * * @param isVarArgs the is var args * @param parameterTypes the parameter types * @param arguments the arguments * @return true, if successful */ static boolean doesParameterTypesMatchForVarArgsInvocation(boolean isVarArgs, Class<?>[] parameterTypes, Object[] arguments) { if (isVarArgs && arguments != null && arguments.length >= 1 && parameterTypes != null && parameterTypes.length >= 1) { final Class<?> componentType = parameterTypes[parameterTypes.length - 1].getComponentType(); final Object lastArgument = arguments[arguments.length - 1]; if (lastArgument != null) { final Class<?> lastArgumentTypeAsPrimitive = getTypeAsPrimitiveIfWrapped(lastArgument); final Class<?> varArgsParameterTypeAsPrimitive = getTypeAsPrimitiveIfWrapped(componentType); isVarArgs = varArgsParameterTypeAsPrimitive.isAssignableFrom(lastArgumentTypeAsPrimitive); } } return isVarArgs && checkArgumentTypesMatchParameterTypes(isVarArgs, parameterTypes, arguments); }
if (!checkArgumentTypesMatchParameterTypes(constructor.isVarArgs(), paramTypes, arguments)) { wrappedConstructorFound = false;
break; boolean methodFound = checkArgumentTypesMatchParameterTypes(method.isVarArgs(), paramTypes, arguments); if (methodFound) { if (potentialMethodToInvoke == null) {
if (!checkArgumentTypesMatchParameterTypes(method.isVarArgs(), paramTypes, arguments)) { wrappedMethodFound = false;