Collections.unmodifiableList e cópia defensiva
Se eu escrever
List<Integer> a1 = Arrays.asList(1, 2, 3);
List<Integer> a2 = Collections.unmodifiableList(a1);
a2
é somente leitura, mas se eu escrever
a1.set(0,10);
entãoa2
também é modificado.
Se na API é dito:
Retorna uma exibição unmodificável da coleção especificada. Esse método permite que os módulos forneçam aos usuários acesso "somente leitura" às coleções internas.
então, por que, se eu modificar a coleção original, também a coleção copiada para o alvo é modificada?
Talvez eu tenha entendido errado o significado e, em caso afirmativo, qual é a maneira de escrever uma cópia defensiva dessa coleção?