Heim > Java > javaLernprogramm > Warum kann ich einer Java-Sammlung keine Werte mit einem generischen Platzhaltertyp (Liste) hinzufügen?

Warum kann ich einer Java-Sammlung keine Werte mit einem generischen Platzhaltertyp (Liste) hinzufügen?

Mary-Kate Olsen
Freigeben: 2024-12-02 19:34:14
Original
332 Leute haben es durchsucht

Why Can't I Add Values to a Java Collection with a Wildcard Generic Type (List

Java-Sammlung mit generischem Wildcard-Typ: Wert hinzufügen

Beim Versuch, einer Java-Sammlung, die mit einem generischen Wildcard-Typ deklariert wurde, einen Wert hinzuzufügen, wie List, kann der Compiler einen Fehler auslösen. Dies tritt auf, wenn der Typ des hinzugefügten Werts (z. B. Parent p) nicht mit dem erwarteten Typ der Sammlung übereinstimmt.

Diese Einschränkung besteht aus Sicherheitsgründen. Betrachten Sie das folgende Beispiel:

List<Child> childList = new ArrayList<Child>();
childList.add(new Child());

List<? extends Parent> parentList = childList;
parentList.set(0, new Parent());

Child child = childList.get(0); // Unexpected type!
Nach dem Login kopieren

Hier definieren wir eine Liste von untergeordneten Objekten und erstellen daraus dann eine generische Wildcard-Liste parentList. Wir können ein Element sicher aus parentList abrufen und in Parent konvertieren. Der Versuch, der Liste ein übergeordnetes Objekt zuzuweisen, ist jedoch nicht zulässig, da es möglicherweise nicht mit dem tatsächlichen Typ der Elemente der Liste kompatibel ist.

Diese Einschränkung verhindert potenzielle Laufzeittypfehler und stellt sicher, dass die Integrität des Die Sammlung bleibt erhalten. Es ermöglicht die Verwendung von Platzhaltertypen zum Lesen aus unbekannten Sammlungen und verhindert gleichzeitig Änderungen, die das beabsichtigte Verhalten der Sammlung beeinträchtigen könnten.

Das obige ist der detaillierte Inhalt vonWarum kann ich einer Java-Sammlung keine Werte mit einem generischen Platzhaltertyp (Liste) hinzufügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage