Heim >Java >javaLernprogramm >Warum kann ich einer Java-Sammlung keine Werte mit einem generischen Platzhaltertyp (Liste) hinzufügen?
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 erweitert Parent>, 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!
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!