Как создать глубокую неизменяемую коллекцию?
Я часто делаю поле коллекции неизменяемым, прежде чем возвращать его из метода получения:
private List<X> _xs;
....
List<X> getXs(){
return Collections.unmodifiableList(_xs);
}
Но я не могу придумать удобный способ сделать это, если X выше сам по себе List:
private List<List<Y>> _yLists;
.....
List<List<Y>> getYLists() {
return Collections.unmodifiableList(_yLists);
}
Проблема в приведенном выше состоит, конечно, в том, что, хотя клиент не может изменить список списков, он может добавлять / удалять объекты Y из встроенных списков.
Какие-нибудь мысли?