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.

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 ...
}
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.
Pour palier à ça, voilà ma solution un peu à la rache :
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 ...
}
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 ?