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