alekseyHunter, Ну и то как вы пишите
>>Вы можете передавать в конструктор сразу MutableList, а при вызове поля из вне, конвертить обратно в List.
возвращает к исходному вопросу как тип то поменять, если я хочу вернуть List, а фактически у меня MutableList. Т.е. вроде от чего ушли к тому и вернулись. С конструктором как раз проблем нет, там все четко)
Немного смущают одинаковые имена _items и items, это напоминает времена Си или паскаля (где-то там такая же ведь фигня была)). Типа одно подчеркивание защищенное свойство, два приватное))
Передавать MutableList смотриться криво. И кажется, что противоречит концепциям языка о безопастных неизменяемых объектах.
Получается что клиентский код, должен либо изначально работать с MutableList, что криво, либо преобразовывать List в MutableList , что лишняя операция и тоже как-то криво. Да и визуально интерфейс класса с мутабельным списком выглядит стилистически не очень красиво.