contrainte extends sur générique
Hello !!
Voilà , j'ai une petite question .... je sais , encore une !! :aie:
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:
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:
1 2 3
|
public <T, U extends TreeNode> test(
List<T> sourceNodes, Class<U> clazz); |
Mais mon ide me signale une érreur
Citation:
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 :zoubi:
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:
1 2
|
public <T extends TreeNode> List<T> getSelectionNodes(); |
et la même qui ne retourne qu'un noeud
Code:
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 :scarymov:
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 :ouin::ouin:
Avez des conseils quand à l'utilisation des génériques?? Dois-je me passer de renvoyer des résultats génériques ??
merci