Посмотрев на код класса 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]
.
Теперь вопрос в том, почему это относится к одному и тому же объекту? Почему он не создает новый объект?