Est-il possible d'obtenir quelque chose de semblable à Class<List<Data>>.class
? J'ai lu que vous ne pouvez pas appeler .class
en raison de la façon dont cela fonctionne interanlly, donc je me demandais si peut-être en utilisant quelque chose de similaire à new ArrayList<Data>().getClass()
pourrait fonctionner? Celui en particulier ne fonctionne pas comme la classe retournée est Class<? extends List<Data>>
alors je suis à court d'options, est-ce même possible?Obtenez un Class <T> ou un Type
Contexte: Je suis en train d'analyser un List<Data>
en utilisant square/moshi mais la bibliothèque semble être sur alpha donc il n'y a aucune documentation.
Generics utiliser [Type Erasure] (http://docs.oracle.com/javase/tutorial/java/generics/erasure.html). Ce qui signifie essentiellement qu'au moment où votre code est compilé, toutes les informations génériques ont disparu, et elles ne sont plus disponibles au moment de l'exécution. Ainsi, il n'y a pas de différence réelle entre une liste et une liste en ce qui concerne l'accès à l'exécution (par exemple la réflexion). –
Il semble qu'il existe une méthode qui accepte un 'Type' comme paramètre pour créer un adaptateur. Vous pourriez vouloir le fournir, de la même manière que vous pouvez obtenir un type avec le tour 'TypeToken' de Gson. Voir aussi http://stackoverflow.com/questions/30005110/how-does-gson-typetoken-work –