Если я пишу
List<Integer> a1 = Arrays.asList(1, 2, 3);
List<Integer> a2 = Collections.unmodifiableList(a1);
a2
доступен только для чтения, но если я пишу
a1.set(0,10);
то a2
также изменяется.
Если в API сказано:
Возвращает немодифицируемое представление указанной коллекции. Этот метод позволяет модулям предоставлять пользователям доступ только для чтения к внутренним коллекции.
то почему, если я изменяю исходную коллекцию, также изменяется измененная копия коллекции?
Возможно, я неправильно понял смысл, и если да, то каким образом написать защитную копию этой коллекции?