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