[generics] instantier un objet
J'ai une classe du genre :
Code:
1 2 3 4 5 6 7 8 9 10
|
public class MaClasse<T> {
public void methode() {
T obj;
...
traitement(obj);
}
private void traitement(T objet) {}
} |
dans ma méthode "methode()" je voudrais instantier un objet du type T, mais je sais pas comment il faut procéder pour cela.
j'ai essayé sans succés.
Merci d'avance
Re: [generics] instantier un objet
Salut,
Tu ne peux pas faire new T() car le type exact de T est perdu à l'exécution.
Pour remédier le problème il faut utiliser l'API de reflection et un objet Class<T> qui permettra de conserver le type exact à l'exécution :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
public class MaClasse<T> {
private final Class<T> type;
public MaClasse(Class<T> pType) {
this.type = pType;
}
public void methode() {
T obj = this.type.newInstance();
...
traitement(obj);
}
private void traitement(T objet) {}
} |
Exemple :
Code:
MaClasse<String> maClasse = new MaClasse<String>(String.class);
a++