|
|
|
@ -257,23 +257,21 @@ public abstract class AopProxyUtils { |
|
|
|
if (ObjectUtils.isEmpty(arguments)) { |
|
|
|
if (ObjectUtils.isEmpty(arguments)) { |
|
|
|
return new Object[0]; |
|
|
|
return new Object[0]; |
|
|
|
} |
|
|
|
} |
|
|
|
if (method.isVarArgs()) { |
|
|
|
if (method.isVarArgs() && (method.getParameterCount() == arguments.length)) { |
|
|
|
if (method.getParameterCount() == arguments.length) { |
|
|
|
Class<?>[] paramTypes = method.getParameterTypes(); |
|
|
|
Class<?>[] paramTypes = method.getParameterTypes(); |
|
|
|
int varargIndex = paramTypes.length - 1; |
|
|
|
int varargIndex = paramTypes.length - 1; |
|
|
|
Class<?> varargType = paramTypes[varargIndex]; |
|
|
|
Class<?> varargType = paramTypes[varargIndex]; |
|
|
|
if (varargType.isArray()) { |
|
|
|
if (varargType.isArray()) { |
|
|
|
Object varargArray = arguments[varargIndex]; |
|
|
|
Object varargArray = arguments[varargIndex]; |
|
|
|
if (varargArray instanceof Object[] && !varargType.isInstance(varargArray)) { |
|
|
|
if (varargArray instanceof Object[] && !varargType.isInstance(varargArray)) { |
|
|
|
Object[] newArguments = new Object[arguments.length]; |
|
|
|
Object[] newArguments = new Object[arguments.length]; |
|
|
|
System.arraycopy(arguments, 0, newArguments, 0, varargIndex); |
|
|
|
System.arraycopy(arguments, 0, newArguments, 0, varargIndex); |
|
|
|
Class<?> targetElementType = varargType.getComponentType(); |
|
|
|
Class<?> targetElementType = varargType.getComponentType(); |
|
|
|
int varargLength = Array.getLength(varargArray); |
|
|
|
int varargLength = Array.getLength(varargArray); |
|
|
|
Object newVarargArray = Array.newInstance(targetElementType, varargLength); |
|
|
|
Object newVarargArray = Array.newInstance(targetElementType, varargLength); |
|
|
|
System.arraycopy(varargArray, 0, newVarargArray, 0, varargLength); |
|
|
|
System.arraycopy(varargArray, 0, newVarargArray, 0, varargLength); |
|
|
|
newArguments[varargIndex] = newVarargArray; |
|
|
|
newArguments[varargIndex] = newVarargArray; |
|
|
|
return newArguments; |
|
|
|
return newArguments; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|