Comprendre la saisie de paramètres génériques en Java avec réflexion
Identifier le type de paramètres génériques en Java par réflexion peut être une technique précieuse dans l'analyse de code et manipulations. Dans cet article, nous aborderons les défis et les solutions impliqués dans la récupération de la classe réelle associée à un paramètre de type générique.
Le défi : récupérer des informations de type générique
Considérez l'extrait de code suivant :
public final class Voodoo { public static void chill(List<?> aListWithTypeSpiderMan) { // Here we aim to obtain the Class object for 'SpiderMan' Class<?> typeOfTheList = ???; } public static void main(String... args) { chill(new ArrayList<SpiderMan>()); } }
Notre objectif est de déterminer le type du paramètre générique dans la méthode de refroidissement. Plus précisément, nous souhaitons extraire la classe SpiderMan.
La solution : utiliser des mécanismes de réflexion
Les capacités de réflexion de Java fournissent un mécanisme permettant d'accéder et de manipuler les informations de classe et de méthode au moment de l'exécution. . Pour découvrir le type d'un paramètre générique, nous pouvons utiliser l'approche suivante :
Class<?> persistentClass = (Class<?>) ((ParameterizedType)getClass().getGenericSuperclass()) .getActualTypeArguments()[0];
Ce code utilise les techniques suivantes :
Remarque
L'extrait de code fourni suppose que la classe actuelle (Voodoo) étend une superclasse qui déclare les paramètres de type. Si ce n'est pas le cas, des ajustements seraient nécessaires pour adapter le code de réflexion en conséquence.
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!