Heim > Java > Wie löst man alle tatsächlichen Typen in Java relativ zur Implementierungsklasse einer generischen Klasse oder Schnittstelle auf?

Wie löst man alle tatsächlichen Typen in Java relativ zur Implementierungsklasse einer generischen Klasse oder Schnittstelle auf?

WBOY
Freigeben: 2024-02-12 18:00:08
nach vorne
1092 Leute haben es durchsucht

Frageninhalt

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);
}
Nach dem Login kopieren

Workaround

guava Eine parametrisierte Version von typetoken 支持此功能。在代表 impltypetoken 上使用 getsupertype 方法来获取 abstractclass3 mit allen tatsächlichen Typparametern.

65bee58535616

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!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage