Ich versuche, alle tatsächlichen Typen einer Implementierungsklasse zu analysieren, die sich auf eine generische Klasse oder Schnittstelle beziehen.
Ich habe dafür ein actualtypeargumentsresolver
,但它仅在typename保持一致时才有效。我想忽略 typename
geschrieben und bekomme alle tatsächlichen Typen.
Wie kann ich dieses Ziel erreichen?
Jede Hilfe wäre sehr dankbar. Danke!
@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 Eine parametrisierte Version von typetoken
支持此功能。在代表 impl
的 typetoken
上使用 getsupertype
方法来获取 abstractclass3
mit allen tatsächlichen Typparametern.
Das obige ist der detaillierte Inhalt vonWie löst man alle tatsächlichen Typen in Java relativ zur Implementierungsklasse einer generischen Klasse oder Schnittstelle auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!