Lorsque nous utilisons des caractères génériques délimités avec super, cela signifie que le paramètre de type peut être le type spécifié ou l'une de ses superclasses. Par exemple, Liste super Numéro> indique que la liste peut contenir des objets de type Number ou l'une de ses classes parent.
Dans votre premier exemple, la liste list déclarée comme Liste super Numéro> ne peut pas prendre un objet car Object n'est pas une sous-classe de Number. D'un autre côté, Integer est une sous-classe de Number, il peut donc être ajouté à la liste.
Dans votre deuxième exemple, vous avez tenté de transmettre une liste< Chaîne> à une méthode qui attend un List super Numéro>. Cette erreur de compilation se produit car String n'est pas une sous-classe de Number. La logique que vous avez présentée est incorrecte : l'objet n'est pas une superclasse de Number et la chaîne n'est pas une sous-classe de Number.
Contrairement aux caractères génériques de limite inférieure, les caractères génériques de limite supérieure ne peuvent pas être utilisés comme producteurs. Cela signifie que vous ne pouvez pas obtenir des éléments individuels à partir d'un List super Numéro>. Cette restriction existe pour éviter les violations de la sécurité des types.
Les caractères génériques délimités avec super nous permettent de créer des collections qui peuvent consommer des objets de plusieurs types qui héritent d'une superclasse commune. . Cependant, nous devons être prudents lors de l'ajout d'éléments à ces collections, car nous ne pouvons pas ajouter d'objets qui ne sont pas des sous-classes de la superclasse désignée.
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!