Allow generics-based injection in case of nested unresolved type variable

Issue: SPR-11471
This commit is contained in:
Juergen Hoeller
2014-03-06 14:13:33 +01:00
parent 49d7bda722
commit 793cab4f80
2 changed files with 122 additions and 1 deletions

View File

@@ -220,6 +220,7 @@ public final class ResolvableType implements Serializable {
}
// Main assignability check about to follow
boolean exactMatch = checkingGeneric;
boolean checkGenerics = true;
Class<?> ourResolved = null;
if (this.type instanceof TypeVariable) {
@@ -241,6 +242,10 @@ public final class ResolvableType implements Serializable {
}
}
}
if (ourResolved == null) {
// Unresolved type variable, potentially nested -> never insist on exact match
exactMatch = false;
}
}
if (ourResolved == null) {
ourResolved = resolve(Object.class);
@@ -249,7 +254,7 @@ public final class ResolvableType implements Serializable {
// We need an exact type match for generics
// List<CharSequence> is not assignable from List<String>
if (checkingGeneric ? !ourResolved.equals(typeResolved) : !ClassUtils.isAssignable(ourResolved, typeResolved)) {
if (exactMatch ? !ourResolved.equals(typeResolved) : !ClassUtils.isAssignable(ourResolved, typeResolved)) {
return false;
}