Non, cela ne fonctionne pas en Java, en raison de l'effacement du type. Au moment où le code est en cours d'exécution, le code ne sait pas ce que T
est. Voir le Java Generics FAQ plus d'informations sur les génériques Java que vous n'avez jamais voulu :) - en particulier, voir la section Type Erasure.
Si vous avez besoin de connaître le type de T
au moment de l'exécution, pour cette ou d'autres raisons, vous pouvez stocker dans un Class<T>
et le prendre dans le constructeur:
private Class<T> realTypeOfT;
public Foo(Class<T> clazz) {
realTypeOfT = clazz;
}
Vous pouvez ensuite appeler newInstance()
etc.
double possible: http://stackoverflow.com/questions/1090458/instantiating-a-generic-class-in-java – Mike
Jon Skeet @ Mike est partout :) –