Hello !!
Voilà , j'ai une petite question .... je sais , encore une !!

donc voilà je suis dans une classe qui n'est pas générique, mais prend en comptes des paramètres génériques dans son constructeur que je restitue via des getters ... j’espère que c'est pas une erreur de conception ??

voilà à quoi ça ressemble
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
    class test{
 
    protected List<? extends TreeNode> sourceNodes;
    protected Class<? extends TreeNode> creationClass;
 
    public <T extends TreeNode, U extends TreeNode> test( 
            List<T> sourceNodes, Class<U> clazz){
          this.sourceNodes = sourceNodes;
          this.creationClass = clazz;
    }
 }
j'ai pensé que c'était possible de modifier la signature de mon constructeur comme ca

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
public <T, U extends TreeNode> test( 
            List<T> sourceNodes, Class<U> clazz);
Mais mon ide me signale une érreur

incompatible types
required: java.util.List<? extends jocode.tree.model.TreeNode>
found: java.util.List<T>
Je comprends pas pourquoi ....avec cette syntaxe réduite c'est comme si T et U était en faite le même template ...

C'est pas tros génant , je peux toujours utiliser la première version, mais j'aime bien tout savoir
Si quelqu’un a deux minutes pour m'expliquer ou me donner un lien ...

Sinon j'ai une autre question , là aussi sur les génériques.

J'ai une méthode comme ça

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
public <T extends TreeNode> List<T> getSelectionNodes();
et la même qui ne retourne qu'un noeud

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
public <T extends TreeNode> T getSelectionNode();
Je sais pas si je fait bien d'inclure des paramètres générique dans la seconde méthode. En effet elle ne fait que caster dynamiquement son résultat au type déclaré de la variable affecté par son invocation.
De plus , un cast reste nécessaire par exemple pour le passage de paramètres à une méthode , ect ....(ou un truc bizarre obj.<TreeNode>getSelectionNode())
J'ai pas mal de getters, et si j'applique la généricité au paramêtre qui ne sont pas des collections, je suis dans le
Pourtant ça semblerais plus logique de faire ainsi puisse que les retours de mes collections sont générique, ce qui reste super pratique ....
Donc dilème
Avez des conseils quand à l'utilisation des génériques?? Dois-je me passer de renvoyer des résultats génériques ??

merci