Java Generics : résoudre l'énigme du mot-clé « Super »
Malgré l'exploration de diverses ressources sur les génériques, vous rencontrez toujours une confusion concernant le ' super' mot-clé. Examinons les subtilités de l'utilisation de « super » dans les génériques Java pour clarifier ces doutes.
1. Résoudre la contradiction avec « ? super Number'
Lors de la déclaration d'une collection comme 'List super Number>', vous pouvez supposer qu'il peut contenir des objets qui sont les parents de Number. Cependant, l'inverse se produit : vous pouvez ajouter des entiers mais pas des objets.
La raison réside dans la conversion de capture. 'Liste&Lt ; ? super Numéro>' ne peut capturer que les types qui peuvent étendre Number et ses supertypes. Puisque Object est une superclasse de Number, mais pas une extension, il ne peut pas être capturé. Cependant, Integer est un sous-type de Number, il peut donc être ajouté.
2. Déchiffrer le comportement avec 'List
Compilation de 'test(sList);' échoue car 'List
En résumé, '? super T' indique que la collection peut contenir des objets de type T ou l'une de ses superclasses qui sont compatibles avec les extensions. Cependant, cela n'inclut pas tous les supertypes, uniquement ceux qui étendent le type spécifié.
3. Pourquoi '' est interdit
Java n'autorise pas '' car cela conduit à des situations ambiguës. Par exemple, "Liste" pourrait capturer à la fois 'List
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!