in src/main/java/org/apache/maven/shared/utils/introspection/MethodMap.java [310:374]
private static boolean isMethodInvocationConvertible(Class<?> formal, Class<?> actual) {
/*
* if it's a null, it means the arg was null
*/
if (actual == null && !formal.isPrimitive()) {
return true;
}
/*
* Check for identity or widening reference conversion
*/
if (actual != null && formal.isAssignableFrom(actual)) {
return true;
}
/*
* Check for boxing with widening primitive conversion. Note that
* actual parameters are never primitives.
*/
if (formal.isPrimitive()) {
if (formal == Boolean.TYPE && actual == Boolean.class) {
return true;
}
if (formal == Character.TYPE && actual == Character.class) {
return true;
}
if (formal == Byte.TYPE && actual == Byte.class) {
return true;
}
if (formal == Short.TYPE && (actual == Short.class || actual == Byte.class)) {
return true;
}
if (formal == Integer.TYPE && (actual == Integer.class || actual == Short.class || actual == Byte.class)) {
return true;
}
if (formal == Long.TYPE
&& (actual == Long.class
|| actual == Integer.class
|| actual == Short.class
|| actual == Byte.class)) {
return true;
}
if (formal == Float.TYPE
&& (actual == Float.class
|| actual == Long.class
|| actual == Integer.class
|| actual == Short.class
|| actual == Byte.class)) {
return true;
}
if (formal == Double.TYPE
&& (actual == Double.class
|| actual == Float.class
|| actual == Long.class
|| actual == Integer.class
|| actual == Short.class
|| actual == Byte.class)) {
return true;
}
}
return false;
}