Envoyé par
®om
Concernant "les types génériques sont perdus après la compilation", comment est-il possible que la classe Class puisse récupérer par introspection ces types?
En fait il faut bien distinguer deux cas...
Pour les classes/interfaces/méthodes purement paramétré, comme List<E> ou ArrayList<E>, tu ne pourras récupérer que le type déclaré de <E> (Object dans ce cas). Ainsi que tu utilises une ArrayList<String>, une ArrayList<Date> ou une ArrayList<Long> tu obtiendras le même résultat et c'est normal car pour ces trois instances getClass() renvoi la même chose...
Pour les classes/interfaces/méthodes qui utilisent des types paramétré c'est différent, par exemple pour cette méthode :
public void method(List<String> list);
On peut retrouver le type String facilement via Reflection...
De même pour :
public class String implements Comparable<String> ...
On pourra retrouver par reflection le type paramétré de Comparable...
Je ne sais pas si je suis clair
a++
Partager