Maison >Java >javaDidacticiel >Génériques Java : comment le mot-clé « super » fonctionne-t-il réellement avec les caractères génériques délimités ?
Introduction :
Comprendre le mot-clé « super » dans les génériques Java peut être une tâche déroutante. Cet article vise à faire la lumière sur ce concept en explorant ses nuances à travers des exemples spécifiques et en abordant les idées fausses courantes.
Génériques délimités avec le mot clé « Super » :
Le caractère générique délimité Liste super Numéro> permet de capturer Number et ses supertypes. Cependant, il est crucial de noter que cela ne signifie pas que vous pouvez ajouter n'importe quel supertype Nombre à cette liste.
Comportement inattendu de l'objet par rapport à l'entier :
Dans le Par exemple, vous avez mentionné qu'Integer(0) peut être ajouté à List super Number>, alors que Object() ne le peut pas. Ce comportement découle des règles de conversion de capture pour les caractères génériques délimités. Liste super Numéro> ne peut capturer que les nombres, les objets et les sérialisables, dont le nombre est le supertype le plus bas.
Pourquoi ajouter une chaîne à la liste ? super Numéro> Ne compile pas :
Bien que String étend Object, une superclasse de Number, en ajoutant String à List super Numéro> ne parvient pas à compiler. En effet, les caractères génériques délimités suivent les directives PECS (producteur-étend, consommateur-super). Liste super Numéro> est un consommateur de Number, donc son type d'argument ne peut pas être un producteur de String.
Pourquoi Autorisé dans les génériques Java ?
L'absence de Les constructions dans les génériques Java proviennent du fait qu'elles n'ont pas de sens. Si un type générique peut accepter n'importe quel supertype de sa limite, il n'est pas nécessaire d'avoir un paramètre de type spécifique.
Conclusion :
Comprendre le mot-clé « super » dans les génériques Java nécessite un examen attentif de ses implications et de son adhésion aux lignes directrices du PECS. En comprenant ces concepts, vous pouvez utiliser efficacement les caractères génériques délimités pour améliorer la flexibilité de vos API.
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!