Почему мы можем изменить неизменяемый список, если у нас есть оригинальный?
Глядя на кодCollections
класс, я узнал, что когда мы используем методunmodifiableList(List list)
или жеunmodifiableCollection(Collection c)
он не создает новый объект, но возвращает ссылку на тот же объект и переопределяет методы, которые могут изменитьList
[ add
, addall
, remove
, retainAll
...]
Итак, я запустил этот тест:
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 ]
.
Теперь дело в том, почему это относится к одному и тому же объекту? Почему это не создает новый объект?