1
1
/*
2
- * Copyright 2002-2023 the original author or authors.
2
+ * Copyright 2002-2024 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
@@ -169,7 +169,7 @@ void forInstanceProvider() {
169
169
170
170
@ Test
171
171
void forInstanceProviderNull () {
172
- ResolvableType type = ResolvableType .forInstance (new MyGenericInterfaceType <String >(null ));
172
+ ResolvableType type = ResolvableType .forInstance (new MyGenericInterfaceType <>(null ));
173
173
assertThat (type .getType ()).isEqualTo (MyGenericInterfaceType .class );
174
174
assertThat (type .resolve ()).isEqualTo (MyGenericInterfaceType .class );
175
175
}
@@ -1177,6 +1177,20 @@ void isAssignableFromForComplexWildcards() throws Exception {
1177
1177
assertThatResolvableType (complex4 ).isNotAssignableFrom (complex3 );
1178
1178
}
1179
1179
1180
+ @ Test
1181
+ void isAssignableFromForUnresolvedWildcards () {
1182
+ ResolvableType wildcard = ResolvableType .forInstance (new Wildcard <>());
1183
+ ResolvableType wildcardFixed = ResolvableType .forInstance (new WildcardFixed ());
1184
+ ResolvableType wildcardConcrete = ResolvableType .forClassWithGenerics (Wildcard .class , Number .class );
1185
+
1186
+ assertThat (wildcard .isAssignableFrom (wildcardFixed )).isTrue ();
1187
+ assertThat (wildcard .isAssignableFrom (wildcardConcrete )).isTrue ();
1188
+ assertThat (wildcardFixed .isAssignableFrom (wildcard )).isFalse ();
1189
+ assertThat (wildcardFixed .isAssignableFrom (wildcardConcrete )).isFalse ();
1190
+ assertThat (wildcardConcrete .isAssignableFrom (wildcard )).isTrue ();
1191
+ assertThat (wildcardConcrete .isAssignableFrom (wildcardFixed )).isFalse ();
1192
+ }
1193
+
1180
1194
@ Test
1181
1195
void identifyTypeVariable () throws Exception {
1182
1196
Method method = ClassArguments .class .getMethod ("typedArgumentFirst" , Class .class , Class .class , Class .class );
@@ -1574,7 +1588,6 @@ public ResolvableType getResolvableType() {
1574
1588
}
1575
1589
}
1576
1590
1577
-
1578
1591
public class MySimpleInterfaceType implements MyInterfaceType <String > {
1579
1592
}
1580
1593
@@ -1584,28 +1597,24 @@ public abstract class MySimpleInterfaceTypeWithImplementsRaw implements MyInterf
1584
1597
public abstract class ExtendsMySimpleInterfaceTypeWithImplementsRaw extends MySimpleInterfaceTypeWithImplementsRaw {
1585
1598
}
1586
1599
1587
-
1588
1600
public class MyCollectionInterfaceType implements MyInterfaceType <Collection <String >> {
1589
1601
}
1590
1602
1591
1603
1592
1604
public abstract class MySuperclassType <T > {
1593
1605
}
1594
1606
1595
-
1596
1607
public class MySimpleSuperclassType extends MySuperclassType <String > {
1597
1608
}
1598
1609
1599
-
1600
1610
public class MyCollectionSuperclassType extends MySuperclassType <Collection <String >> {
1601
1611
}
1602
1612
1603
1613
1604
- interface Wildcard <T extends Number > extends List < T > {
1614
+ public class Wildcard <T extends Number > {
1605
1615
}
1606
1616
1607
-
1608
- interface RawExtendsWildcard extends Wildcard {
1617
+ public class WildcardFixed extends Wildcard <Integer > {
1609
1618
}
1610
1619
1611
1620
0 commit comments