Heim >Java >javaLernprogramm >Warum kann ich einer Liste keine Daten hinzufügen?

Warum kann ich einer Liste keine Daten hinzufügen?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-03 10:46:39217Durchsuche

Why Can't I Add Data to a `List

Daten zur Liste hinzufügen

Das Dilemma beim Versuch, Elemente zu einer Liste hinzuzufügen ergibt sich aus der Einschränkung der Wildcard-Deklaration. In einer solchen Deklaration kann die Variable jeden Wert aus einer Typfamilie enthalten. Dies impliziert, dass die folgenden Zuweisungen gültig sind:

List<? extends Number> foo3 = new ArrayList<Number>();
List<? extends Number> foo3 = new ArrayList<Integer>(); 
List<? extends Number> foo3 = new ArrayList<Double&gt(); 

Diese Wildcard-Deklaration verbietet jedoch das direkte Hinzufügen von Elementen zur Liste, da der spezifische Listentyp unbekannt ist. Beispielsweise ist das Hinzufügen einer Ganzzahl zu foo3 nicht zulässig, da es sich möglicherweise um eine ArrayList handeln könnte.

Im Gegensatz dazu ist die Wildcard-Deklaration List ermöglicht das Hinzufügen von Number oder seinen Oberklassen. Umgekehrt beschränkt es den Abruf auf den Typ Number oder seine Unterklassen. Dieses Verhalten entsteht dadurch, dass sichergestellt wird, dass der Liste hinzugefügte Elemente ihre Integrität nicht verletzen.

Um die praktischen Auswirkungen zu veranschaulichen, zeigen die folgenden Aufrufe von Collections.copy(), wie Platzhalter Flexibilität beim Kopieren von Daten zwischen Listen verwandter Elemente ermöglichen Typen:

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>());

Zusammenfassend lässt sich sagen, dass das Hinzufügen von Daten zu List ist aufgrund der Unsicherheit über den Typ der zugrunde liegenden Liste nicht möglich, während das Lesen aus List ist auf den Typ Number und seine Unterklassen beschränkt. Platzhalter bieten Vielseitigkeit beim Kopieren von Daten zwischen Listen verwandter Typen, wie beispielsweise Collections.copy().

Das obige ist der detaillierte Inhalt vonWarum kann ich einer Liste keine Daten hinzufügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn