У меня есть класс с частным полем, который является изменчивой коллекцией. Поле в этом конкретном экземпляре является ArrayBuffer
, хотя мой вопрос распространяется на любой конечный упорядоченный тип сбора данных с произвольным доступом. Я хочу открыть это поле, не разрешая другим изменять его. В Java я бы добавил метод вроде:
private List<T> theList;
public List<T> getList() {
return Collections.unmodifiableList(theList);
}
В Java мы просто принимаем, что результатом является List
, который не полностью реализует интерфейс List
, потому что #add
и друзья бросают UnsupportedOperationException
.
В Scala я ожидал бы найти подходящую черту с такими аксессуарами, как iterator
, size
и apply
(для получения значений по индексу), но без мутаторов. Существует ли такой тип, которого я еще не нашел?