Bonsoir,
Allons tout de suite à l'essentiel : soit une classe C définie par (code partiel) :
Soit le code (simplifié, sans gestion d'erreur, et volontairement incorrect - voir question) suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public class C { private List<D> list = new ArrayList<D>(); ... }
Question : quelle valeur dois-je assigner à la variable type pour que ce code soit valide ? (ou, plus généralement), comment récupérer le type contenu d'un conteneur lorsqu'on est grosso-modo dans le cas décrit ci-dessous ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 private void foobar(Object object) { Field field = object.getClass().getDeclaredField("list"); field.setAccessible(true); List<?> list = (List<?>) field.get(object); System.out.println(list.getClass().getName()); // sortie: java.util.arrayList // -> pas d'information sur le type générique Class<?> type = null; Object element = type.newInstance(); list.add(element); }
Je ne suis pas sûr d'être clair, donc n'hésitez pas à me poser des questions pour que je puisse clarifier mon propos.
Partager