У меня есть класс с частным измененным списком данных.
Мне нужно выставить элементы списка, заданные в следующих условиях:
- Список не должен изменяться вне;
- Для разработчиков, использующих функцию getter, должно быть ясно, что список, который они получают, не может быть изменен.
Какая функция геттера должна быть отмечена как рекомендуемый подход? Или вы можете предложить лучшее решение?
class DataProcessor {
private final ArrayList<String> simpleData = new ArrayList<>();
private final CopyOnWriteArrayList<String> copyData = new CopyOnWriteArrayList<>();
public void modifyData() {
...
}
public Iterable<String> getUnmodifiableIterable() {
return Collections.unmodifiableCollection(simpleData);
}
public Iterator<String> getUnmodifiableIterator() {
return Collections.unmodifiableCollection(simpleData).iterator();
}
public Iterable<String> getCopyIterable() {
return copyData;
}
public Iterator<String> getCopyIterator() {
return copyData.iterator();
}
}
UPD: этот вопрос связан с реальным обзором кода, посвященным наилучшей практике реализации списка геттеров