Pourquoi peut-on changer le inmodifiable liste si nous avons l'original?

En regardant le code de Collections classe, j'ai appris que lorsque nous sommes à l'aide de la méthode unmodifiableList(List list) ou unmodifiableCollection(Collection c) il n'est pas de la création d'un nouvel objet, mais il est de retour à la référence de l'objet même et en remplaçant les méthodes qui peuvent modifier l'List [ add, addall, remove, retainAll ... ]

Alors, j'ai couru ce 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 );

résultat est [ 1,2 ] .

Maintenant, le point est pourquoi il est fait référence au même objet? Pourquoi ne pas créer un nouvel objet?

InformationsquelleAutor Rakesh Juyal | 2010-09-06