¿Cómo crear una colección profunda no modificable?
A menudo hago que un campo de colección no se pueda modificar antes de devolverlo desde un método getter:
private List<X> _xs;
....
List<X> getXs(){
return Collections.unmodifiableList(_xs);
}
Pero no puedo pensar en una forma conveniente de hacerlo si la X anterior es en sí misma una Lista:
private List<List<Y>> _yLists;
.....
List<List<Y>> getYLists() {
return Collections.unmodifiableList(_yLists);
}
El problema en lo anterior es, por supuesto, que aunque el cliente no puede modificar la Lista de listas, puede agregar / eliminar objetos Y de las listas incrustadas.
¿Alguna idea?