Maison >Java >javaDidacticiel >Pourquoi ne puis-je pas ajouter des éléments à une « liste »

Pourquoi ne puis-je pas ajouter des éléments à une « liste »

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-13 16:48:11754parcourir

Why Can't I Add Elements to a `List

Caractères génériques et mutabilité dans les collections Java

Lorsque vous travaillez avec des collections Java, il est important de comprendre comment les caractères génériques affectent le comportement de la collection. Considérez le code suivant :

List<? extends Parent> list = ...;
Parent p = factory.get();   // returns concrete implementation
list.set(0, p);   // fails: set(int, ? extends Parent) cannot be applied to (int, Parent)

Ce code ne parvient pas à se compiler en raison d'une restriction liée aux caractères génériques et à la mutabilité.

Pourquoi la restriction ?

La syntaxe générique, , indique que la collection contient un sous-type de Parent. Cependant, cette restriction empêche l'ajout d'un objet Parent à la collection car le sous-type spécifique pourrait ne pas le permettre.

Par exemple, si la liste était en réalité une Liste, l'ajout d'un objet Parent violerait la sécurité de type de la collection. En effet, Child est un sous-type de Parent et un objet Parent peut ne pas être compatible avec les opérations autorisées sur Child.

Pour maintenir la sécurité des types, Java restreint l'ajout d'éléments aux collections de caractères génériques. Cette restriction garantit que la collection reste cohérente et évite tout comportement inattendu.

Conclusion

Lors de l'utilisation de caractères génériques, il est crucial de considérer les implications potentielles en matière de mutabilité. Bien que les caractères génériques offrent une certaine flexibilité lorsque vous travaillez avec des collections, ils introduisent également certaines contraintes pour garantir l'intégrité de la collection et de son contenu.

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