diff --git a/spring-core/src/main/java/org/springframework/core/ResolvableType.java b/spring-core/src/main/java/org/springframework/core/ResolvableType.java index f26220334c8..aecd76a7afe 100644 --- a/spring-core/src/main/java/org/springframework/core/ResolvableType.java +++ b/spring-core/src/main/java/org/springframework/core/ResolvableType.java @@ -1047,7 +1047,7 @@ public class ResolvableType implements Serializable { for (int i = 0; i < generics.length; i++) { ResolvableType generic = generics[i]; Type argument = (generic != null ? generic.getType() : null); - arguments[i] = (argument != null ? argument : variables[i]); + arguments[i] = (argument != null && !(argument instanceof TypeVariable) ? argument : variables[i]); } ParameterizedType syntheticType = new SyntheticParameterizedType(clazz, arguments); diff --git a/spring-core/src/test/java/org/springframework/core/ResolvableTypeTests.java b/spring-core/src/test/java/org/springframework/core/ResolvableTypeTests.java index 5ad690ff8e3..24ee9cdea42 100644 --- a/spring-core/src/test/java/org/springframework/core/ResolvableTypeTests.java +++ b/spring-core/src/test/java/org/springframework/core/ResolvableTypeTests.java @@ -43,7 +43,6 @@ import java.util.TreeSet; import java.util.concurrent.Callable; import org.hamcrest.Matchers; -import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -1338,7 +1337,6 @@ public class ResolvableTypeTests { assertTrue(setClass.isAssignableFrom(fromReturnType)); } - @Ignore @Test public void testSpr16456() throws Exception { ResolvableType genericType = ResolvableType.forField(