Warum kann meine `unmodifizierbareListe` geändert werden? [Duplikat

Diese Frage hat hier bereits eine Antwort:

Warum können wir die nicht änderbare Liste ändern, wenn wir die ursprüngliche haben? 7 answers

Ich will einList, dessen Elemente nicht entfernt oder hinzugefügt werden können. Ich dachte, ich hätte die Antwort mit @ gefund Collections.unmodifiableList in Java 8. Ich übergebe meine ursprüngliche Liste und erhalte eine vermeintlich nicht änderbare Liste zurück.

Wenn ich ein Element aus der ursprünglichen Liste lösche, wird meine nicht änderbare Liste geändert. Was ist los

Siehe diesen Demo-Code. Meine nicht veränderbare Liste wird beim Löschen vom Original um 3 Elemente 2 verkleinert.

String dog = "dog";
String cat = "cat";
String bird = "bird";

List< String > originalList = new ArrayList<>( 3 );
originalList.add( dog );
originalList.add( cat );
originalList.add( bird );

List< String > unmodList = Collections.unmodifiableList( originalList );
System.out.println( "unmod before: " + unmodList );  // Yields [dog, cat, bird]
originalList.remove( cat );  // Removing element from original list affects the unmodifiable list?
System.out.println( "unmod after: " + unmodList );  // Yields [dog, bird]

Antworten auf die Frage(2)

Ihre Antwort auf die Frage