Maison > Java > javaDidacticiel > Pourquoi ne puis-je pas ajouter de données à une liste

Pourquoi ne puis-je pas ajouter de données à une liste

Patricia Arquette
Libérer: 2025-01-03 10:46:39
original
279 Les gens l'ont consulté

Why Can't I Add Data to a `List

Ajout de données à la liste

Le dilemme rencontré lors de la tentative d'ajout d'éléments à une liste découle de la contrainte de la déclaration générique. Dans une telle déclaration, la variable peut contenir n'importe quelle valeur d'une famille de types. Cela implique que les affectations suivantes sont valides :

List<? extends Number> foo3 = new ArrayList<Number>();
List<? extends Number> foo3 = new ArrayList<Integer>(); 
List<? extends Number> foo3 = new ArrayList<Double&gt(); 
Copier après la connexion

Cependant, cette déclaration générique interdit l'ajout direct d'éléments à la liste, car le type spécifique de liste est inconnu. Par exemple, l'ajout d'un Integer à foo3 n'est pas autorisé car il pourrait potentiellement s'agir d'un ArrayList.

En revanche, la déclaration générique List permet l'ajout de Number ou de ses superclasses. À l’inverse, cela limite la récupération au type Number ou à ses sous-classes. Ce comportement découle de la garantie que les éléments ajoutés à la liste ne violeront pas son intégrité.

Pour illustrer les implications pratiques, les appels suivants à Collections.copy() démontrent comment les caractères génériques permettent une flexibilité dans la copie de données entre des listes d'objets associés. types :

Collections.copy(new ArrayList<Number>(), new ArrayList<Number>());
Collections.copy(new ArrayList<Number>(), new ArrayList<Integer>());
Collections.copy(new ArrayList<Object>(), new ArrayList<Number>());
Collections.copy(new ArrayList<Object>(), new ArrayList<Double>());
Copier après la connexion

En conclusion, ajouter des données à List n'est pas possible en raison de l'incertitude quant au type de la liste sous-jacente, lors de la lecture de List est limité au type Number et à ses sous-classes. Les caractères génériques offrent une polyvalence dans la copie de données entre des listes de types associés, comme l'illustre Collections.copy().

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal