Salut,
Alors voilà, je veux coder une classe conteneur qui peut accueillir plusieurs types de données. Donc, je pars sur une implémentation générique (classe paramétrée) pour éviter ensuite de recaster dans tous les sens.
Mais mon problème est que je veux aussi pouvoir avoir accès au type paramétré de mon conteneur pour une raison de présentation dans une GUI. Et là, avec une bête classe paramétrée, ce n'est pas possible à cause de l'erasure.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public class MonConteneur(<T> extends StructureNode { private T value; public MonConteneur(T value) { super(); this.value = value; } // autres fonctions ... }
Pour palier à ça, voilà ma solution un peu à la rache :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public class MonConteneur(<T> extends StructureNode { private T value; private Class type; public MonConteneur(T value) { super(); this.value = value; this.type = value.getClass(); } // autres fonctions ... }
Vous en pensez quoi ? Y a-t-il une autre solution ?
Partager