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 answersIch 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]