Maison >Java >javaDidacticiel >Pourquoi ne puis-je pas ajouter des éléments à une « liste »
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, extends Parent>, 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
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!