Warum können wir die nicht änderbare Liste ändern, wenn wir die ursprüngliche haben?
Beim Betrachten des Codes vonCollections
Klasse, ich habe erfahren, dass, wenn wir die Methode verwendenunmodifiableList(List list)
oderunmodifiableCollection(Collection c)
Es wird kein neues Objekt erstellt, aber es wird die Referenz desselben Objekts zurückgegeben und die Methoden überschrieben, mit denen das @ geändert werden kanList
[ add
, addall
, remove
, retainAll
...]
So lief ich diesen Test:
List modifiableList = new ArrayList();
modifiableList.add ( 1 );
List unmodifiableList = Collections.unmodifiableList( modifiableList );
// unmodifiableList.add(3); // it will throw the exception
modifiableList.add ( 2 );
System.out.println( unmodifiableList );
Ergebnis ist[ 1,2 ]
.
Jetzt ist der Punkt, warum es sich auf dasselbe Objekt bezieht? Warum wird kein neues Objekt erstellt?