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 ?

Génériques Java : comment le mot-clé « super » fonctionne-t-il réellement avec les caractères génériques délimités ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-25 13:55:12749parcourir

Java Generics: How Does the `super` Keyword Really Work with Bounded Wildcards?

Génériques Java : Démystifier le mot-clé « Super »

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 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, 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 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 ne parvient pas à compiler. En effet, les caractères génériques délimités suivent les directives PECS (producteur-étend, consommateur-super). Liste 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn