Eu tive um probleminha aqui, e ele ocorria por que tínhamos uma lista não modificável que na verdade poderia ser modificada.
publicstaticvoidmain(Stringargs[]){Listlst=newArrayList();lst.add("Item 1");lst.add("Item 2");ListunmodList=Collections.unmodifiableList(lst);System.out.println(unmodList.size());lst.remove(0);System.out.println(unmodList.size());//ops.... um item foi removido}
"Collections.unmodifiableList" ele mantém a referência à lista original e não uma nova lista com os elementos da lista anterior.
Fica ai a dica, livre-se da lista original para ter realmente uma lista não modificável.
O método só não deixa mudar nada na unmodifiableList. A original continua sendo uma ArrayList.
S
Ssalgado
Mais ou menos. A lista original pode ser modificada, mas uma modificação nela não deveria modificar a" unmodifiable" list. Elas deveriam ser independentes ao meu ver.
A implementação dessa lista deveria criar uma copia da lista e não utilizar a mesma referencia.
maschiojv
Ssalgado:
Mark_Ameba:
O método só não deixa mudar nada na unmodifiableList. A original continua sendo uma ArrayList.
Mais ou menos. A lista original pode ser modificada, mas uma modificação nela não deveria modificar a" unmodifiable" list. Elas deveriam ser independentes ao meu ver.
A implementação dessa lista deveria criar uma copia da lista e não utilizar a mesma referencia.
Você pode criar outra lista então, e tornar esta outra unmodifiable, como abaixo.
O método só não deixa mudar nada na unmodifiableList. A original continua sendo uma ArrayList.
Mais ou menos. A lista original pode ser modificada, mas uma modificação nela não deveria modificar a" unmodifiable" list. Elas deveriam ser independentes ao meu ver.
A implementação dessa lista deveria criar uma copia da lista e não utilizar a mesma referencia.
Você pode criar outra lista então, e tornar esta outra unmodifiable, como abaixo.