@@ -212,19 +212,27 @@ void resolveNestedTypeVariable() throws Exception {
212
212
}
213
213
214
214
@ Test
215
- void resolvedTypeWithBase () {
216
- Type type = method (WithBaseTypes .class , "get" ).getGenericReturnType ();
217
- Type resolvedType = resolveType (type , WithBaseTypes .class );
215
+ void resolveTypeWithElementBounds () {
216
+ Type type = method (WithElementBounds .class , "get" ).getGenericReturnType ();
217
+ Type resolvedType = resolveType (type , WithElementBounds .class );
218
218
ParameterizedTypeReference <List <A >> reference = new ParameterizedTypeReference <>() {};
219
219
assertThat (resolvedType ).isEqualTo (reference .getType ());
220
220
}
221
221
222
+ @ Test
223
+ void resolveTypeWithUnresolvableElement () {
224
+ Type type = method (WithUnresolvableElement .class , "get" ).getGenericReturnType ();
225
+ Type resolvedType = resolveType (type , WithUnresolvableElement .class );
226
+ assertThat (resolvedType .toString ()).isEqualTo ("java.util.List<E>" );
227
+ }
228
+
222
229
private static Method method (Class <?> target , String methodName , Class <?>... parameterTypes ) {
223
230
Method method = findMethod (target , methodName , parameterTypes );
224
231
assertThat (method ).describedAs (target .getName () + "#" + methodName ).isNotNull ();
225
232
return method ;
226
233
}
227
234
235
+
228
236
public interface MyInterfaceType <T > {
229
237
}
230
238
@@ -348,33 +356,35 @@ public static class MySimpleTypeWithMethods extends MyTypeWithMethods<Integer> {
348
356
static class GenericClass <T > {
349
357
}
350
358
351
- class A {}
359
+ class A {}
352
360
353
- class B <T >{}
361
+ class B <T > {}
354
362
355
363
class C extends A {}
356
364
357
365
class D extends B <Long > {}
358
366
359
367
class E extends C {}
360
368
361
- class TestIfc <T >{}
369
+ class TestIfc <T > {}
362
370
363
- class TestImpl <I extends A , T extends B <I >> extends TestIfc <T >{
371
+ class TestImpl <I extends A , T extends B <I >> extends TestIfc <T > {
364
372
}
365
373
366
374
abstract static class BiGenericClass <T extends B <?>, V extends A > {}
367
375
368
- abstract static class SpecializedBiGenericClass <U extends C > extends BiGenericClass <D , U >{}
376
+ abstract static class SpecializedBiGenericClass <U extends C > extends BiGenericClass <D , U > {}
369
377
370
378
static class TypeFixedBiGenericClass extends SpecializedBiGenericClass <E > {}
371
379
372
380
static class TopLevelClass <T > {
381
+
373
382
class Nested <X > {
374
383
}
375
384
}
376
385
377
386
static class TypedTopLevelClass extends TopLevelClass <Integer > {
387
+
378
388
class TypedNested extends Nested <Long > {
379
389
}
380
390
}
@@ -394,24 +404,31 @@ interface IdFixingRepository<T> extends Repository<T, Long> {
394
404
}
395
405
396
406
static class WithMethodParameter {
407
+
397
408
public void nestedGenerics (List <Map <String , Integer >> input ) {
398
409
}
399
410
}
400
411
401
- public interface ListOfListSupplier <T > {
412
+ interface ListOfListSupplier <T > {
402
413
403
414
List <List <T >> get ();
404
415
}
405
416
406
- public interface StringListOfListSupplier extends ListOfListSupplier <String > {
417
+ interface StringListOfListSupplier extends ListOfListSupplier <String > {
407
418
}
408
419
409
- static class WithBaseTypes {
420
+ static class WithElementBounds {
410
421
411
422
<T extends A > List <T > get () {
412
423
return List .of ();
413
424
}
425
+ }
426
+
427
+ static class WithUnresolvableElement <T > {
414
428
429
+ List <T > get () {
430
+ return List .of ();
431
+ }
415
432
}
416
433
417
434
}
0 commit comments