GenericTypeResolver properly handles bound parameterized type

Issue: SPR-10819
This commit is contained in:
Juergen Hoeller
2013-08-20 19:36:57 +02:00
parent da0128f120
commit ea6525f15f
2 changed files with 19 additions and 5 deletions

View File

@@ -305,7 +305,7 @@ public abstract class GenericTypeResolver {
}
/**
* Extract a class instance from given Type.
* Extract a Class from the given Type.
*/
private static Class<?> extractClass(Class<?> ownerClass, Type arg) {
if (arg instanceof ParameterizedType) {
@@ -322,9 +322,12 @@ public abstract class GenericTypeResolver {
arg = getTypeVariableMap(ownerClass).get(tv);
if (arg == null) {
arg = extractBoundForTypeVariable(tv);
if (arg instanceof ParameterizedType) {
return extractClass(ownerClass, ((ParameterizedType) arg).getRawType());
}
}
else {
arg = extractClass(ownerClass, arg);
return extractClass(ownerClass, arg);
}
}
return (arg instanceof Class ? (Class) arg : Object.class);