Почему мы можем изменить неизменяемый список, если у нас есть исходный?

Посмотрев на код класса Collections , я узнал, что когда мы используем метод unmodifiableList (List list) или unmodifiableCollection (Collection c) он не создает новый объект, а возвращает ссылку на тот же объект и переопределяет методы, которые могут изменять список List [ add , addall , remove , keepAll ...]
Итак, я запустил этот тест:

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 );

результат это [1,2] .
Теперь вопрос в том, почему это относится к одному и тому же объекту? Почему он не создает новый объект?

7
задан Bozho 6 September 2010 в 13:51
поделиться