Problème de liste de génériques
Bonjour à Tous,
Malgré mes recherches sur le sujet je tourne en rond. c'est surement très simple mais je galère sur la création d'une liste d'élément généric.
je m'explique:
je réalise un ploter pour afficher des courbes donc.
j'ai la class
Code:
Curve<T extends Number, M extends AbstractPoint<T,M>, C extends Curve<T,M,C>>
puis les class files:
Code:
1 2 3
| CurveComplex extends Curve<Complex, PointComplex, CurveComplex>
CurveDouble extends Curve<Double, PointDouble, CurveDouble>
CurveSparam extends CurveComplex |
ca ok c'est bon.
J'ai des class de list de ces objets soit :
Code:
1 2 3 4 5
| CurvesAbstract <C extends Curve<?,?,?>> extends AbstractGroup<String, C> // rq : AbstractGroup contient la gestion d'un objet List<C>
CurvesComplex extends CurvesAbstract<CurveComplex>
CurvesDouble extends CurvesAbstract<CurveDouble>
CurvesSparam extends CurvesComplex |
Dans ma class ploter je cherche à avoir un object pouvant lister tous les types de courbe pour les afficher soit un type generic :
Code:
CurvesAbstract<?> curves = new CurvesAbstract<Curve<?,?,?>>();
Toutefois je ne peux pas faire cela:
Code:
1 2 3 4
| curves.addCurves(new CurvesSparam());
//Voici le message d'erreur que j'ai:
The method addCurves(CurvesAbstract<capture#1-of ?>) in the type CurvesAbstract<capture#1-of ?> is not applicable for the arguments (CurvesSparam) |
Je pense comprendre que le compilateur n'accepte pas que je puisse ajouter des objets même génériques mais différents au sein d'une même liste. Ok mais comment le faire tout de même ;) ?
quelqu'un a t-il une piste pour me sortir de là?
J'ai pensé à faire une class intégrant la gestion de plusieurs listes de chaque type hérité de "Curve" mais cela va être très complexe de gérer et pas très optimisé. De plus si je rajoute un fils à "Curve" il faudra que je modifie cette class pour en tenir compte.
Au final je veux simplement faire une liste de "Curve" avec les fonctions add, remove, get(int i) et iterator<Curve>.
Merci d'avance pour votre aide.
Sébastien.