Como criar uma coleção profunda e não modificável?
Costumo tornar um campo de coleção inalterável antes de retorná-lo a partir de um método getter:
private List<X> _xs;
....
List<X> getXs(){
return Collections.unmodifiableList(_xs);
}
Mas não consigo pensar em uma maneira conveniente de fazer isso se o X acima for uma lista:
private List<List<Y>> _yLists;
.....
List<List<Y>> getYLists() {
return Collections.unmodifiableList(_yLists);
}
O problema acima é claro que, embora o cliente não possa modificar a Lista de listas, ele pode adicionar / excluir objetos Y das listas incorporadas.
Alguma ideia?