Récupération des types de paramètres génériques via Java Reflection
En Java, les développeurs peuvent rencontrer le besoin d'obtenir le type spécifique d'un paramètre générique au moment de l'exécution . Cette question explore comment réaliser cette tâche courante à l'aide de la réflexion Java.
Question :
Est-il possible de récupérer le type spécifique d'un paramètre générique à l'aide de la réflexion Java ?
Scénario :
Considérez le code suivant extrait :
public final class Voodoo { public static void chill(List<?> aListWithTypeSpiderMan) { // Here I'd like to get the Class-Object 'SpiderMan' Class typeOfTheList = ???; } public static void main(String... args) { chill(new ArrayList<SpiderMan>()); } }
Réponse :
Oui, obtenir le type d'un paramètre générique avec réflexion est possible. Une approche consiste à utiliser le code suivant :
Class<T> persistentClass = (Class<T>) ((ParameterizedType)getClass().getGenericSuperclass()) .getActualTypeArguments()[0];
Dans ce code, persistentClass représentera l'argument de type réel du type générique, dans ce cas, SpiderMan. Cependant, il est important de noter que les mécanismes de réflexion sous-jacents peuvent être complexes, c'est pourquoi une compréhension approfondie des génériques et de la réflexion Java est recommandée pour une mise en œuvre réussie.
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!