Bonsoir,

Allons tout de suite à l'essentiel : soit une classe C définie par (code partiel) :

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>();
  ...
}
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
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);
}
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 ?

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.