J'essaie d'analyser tous les types réels d'une classe d'implémentation liée à une classe ou une interface générique.
J'ai écrit un actualtypeargumentsresolver
,但它仅在typename保持一致时才有效。我想忽略 typename
pour cela et j'obtiens tous les types réels.
Comment puis-je atteindre cet objectif ?
Toute aide serait grandement appréciée. Merci!
@Test public void testIndirectlyExtendedGenericSuperclassWithDiffTypeName() { abstract class AbstractClass3<AAA, BBB, CCC> { } abstract class AbstractClass2<AA, BB, CC> extends AbstractClass3<CC, Map, BB> { } abstract class AbstractClass1<A, B> extends AbstractClass2<Long, A, Boolean> { } class Impl extends AbstractClass1<String, Integer> {} Type[] arr = ActualTypeArgumentsResolver.resolve(Impl.class, AbstractClass3.class); Assert.assertTrue(arr.length == 3); Assert.assertEquals(arr[0], Boolean.class); Assert.assertEquals(arr[1], Map.class); Assert.assertEquals(arr[2], String.class); }
guava Une version paramétrée de typetoken
支持此功能。在代表 impl
的 typetoken
上使用 getsupertype
方法来获取 abstractclass3
avec tous les paramètres de type réels.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!