Por que minha `unmodifiableList` é modificável? [duplicado]
Esta pergunta já tem uma resposta aqui:
Por que podemos mudar a lista não modificável se temos a lista original? 7 respostaseu quero umList
cujos elementos não podem ser removidos nem adicionados. Eu pensei que tinha encontrado a resposta comCollections.unmodifiableList no Java 8. Passo a minha lista original e volto a uma lista supostamente não modificável.
No entanto, quando eu excluo um elemento da lista original, minha lista não modificável é modificada. O que está acontecendo?
Veja este código de demonstração. Minha lista não modificável diminui de 3 elementos 2 ao excluir do original.
String dog = "dog";
String cat = "cat";
String bird = "bird";
List< String > originalList = new ArrayList<>( 3 );
originalList.add( dog );
originalList.add( cat );
originalList.add( bird );
List< String > unmodList = Collections.unmodifiableList( originalList );
System.out.println( "unmod before: " + unmodList ); // Yields [dog, cat, bird]
originalList.remove( cat ); // Removing element from original list affects the unmodifiable list?
System.out.println( "unmod after: " + unmodList ); // Yields [dog, bird]