¿Por qué podemos cambiar la lista no modificable si tenemos la lista original?
Al mirar el código deCollections
clase, llegué a saber que cuando usamos el métodounmodifiableList(List list)
ounmodifiableCollection(Collection c)
no está creando un nuevo objeto pero está devolviendo la referencia del mismo objeto y anulando los métodos que pueden modificar elList
[ add
, addall
, remove
, retainAll
...]
Entonces ejecuté esta prueba:
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 );
el resultado es[ 1,2 ]
.
Ahora el punto es ¿por qué se refiere al mismo objeto? ¿Por qué no crea un nuevo objeto?