Caractères génériques multiples sur les méthodes génériques
Question : Différents caractères génériques dans les méthodes génériques peuvent-ils faire référence à des types complètement différents, et comment fonctionne le caractère générique imbriqué se comportent ?
Réponse :
Les caractères génériques imbriqués sont la source de confusion, et non plusieurs caractères génériques.
Extrait Explications :
-
LOLUnknowns1 :ProbablyIllegal ajoute une liste> liste à une liste> mdr. Cela compile parce que ? dans la liste> peut faire référence à n'importe quel type, tandis que List
> peut contenir des listes de n'importe quel type.
-
LOLUnknowns1a: Quand pareil ? est utilisé pour List> types, la compilation échoue car les règles de conversion de capture pour les caractères génériques imbriqués interdisent l'utilisation d'un seul ? pour les deux listes.
-
LOLUnknowns1b : Lorsqu'un argument est explicitement nul, la compilation réussit car null est applicable à tout type générique et ne participe pas à la conversion de capture.
-
DoubleLOL : Ajout de deux List
> instances est autorisée car la conversion de capture ne s'applique pas de manière récursive, ce qui signifie ? peut faire référence à différents types dans chaque liste.
-
IntoTheWild : Création d'une liste
> pour une Liste> n'est pas autorisé car la conversion de capture n'est pas appliquée de manière récursive.
-
IntoTheWild2 : La conversion de capture ne peut pas être appliquée au type de liste interne, donc List
> n'est pas une liste>.
En résumé, plusieurs caractères génériques dans les méthodes génériques permettent une flexibilité dans la gestion des types inconnus, tandis que les caractères génériques imbriqués ont des restrictions spécifiques liées à la conversion de capture.
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!