Salut,

Envoyé par
bobuse
En testant vite-fait ça semble marcher. À la construction, je récupère le type de l'objet à mettre dans mon conteneur. Ainsi, je conserve l'information sur le type du contenu.
Vous en pensez quoi ? Y a-t-il une autre solution ?
Cela ne fonctionne pas tout à fait car tu as le type réel de l'objet et non pas le type paramétré <T>. Par exemple dans ce cas :
MonConteneur<Number> mc = new MonConteneur<Number>(new Integer(0));
Tu obtiendras Integer à la place de Number...
Une solution serait d'utiliser un paramètre Class<T> obligatoire lors de la construction de ton objet :
1 2 3 4 5 6 7 8
| public MonConteneur(T value, Class<T> type) {
super();
this.value = value;
this.type = type;
if (this.type==null) {
throw new NullPointerException("type is null");
}
} |
Que tu utiliserais ensuite comme cela :
MonConteneur<Number> mc = new MonConteneur<Number>(new Integer(0), Number.class);
Si les types ne correspondent pas, tu auras bien sûr une erreur de compilation...
a++
Partager