Maison > Java > Comment résoudre tous les types réels en Java par rapport à la classe d'implémentation d'une classe ou d'une interface générique ?

Comment résoudre tous les types réels en Java par rapport à la classe d'implémentation d'une classe ou d'une interface générique ?

WBOY
Libérer: 2024-02-12 18:00:08
avant
1093 Les gens l'ont consulté

Contenu de la question

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);
}
Copier après la connexion

Workaround

guava Une version paramétrée de typetoken 支持此功能。在代表 impltypetoken 上使用 getsupertype 方法来获取 abstractclass3 avec tous les paramètres de type réels.

65bee58535616

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal