class Order(iitems: List<OrderItem>) {
private val items: MutableList<OrderItem> = items.toMutableList()
}
Принять на вход неизменяемый список OrderItem, сохранить его, как изменяемый и возвращать значение как неизменяемое.
Не работает:
class Order(items: List<OrderItem>) {
private val items: MutableList<OrderItem> = items.toMutableList()
get():List<OrderItem> = field.toList()
}
Язык не позволяет изменить тип возвращаемого значения для геттера. С ошибкой (Getter return type must be equal to the type of the property.)
Обхожу эту проблему следующим образом:
class Order(items: List<OrderItem>) {
private val _items: MutableList<OrderItem> = items.toMutableList()
val items: List<OrderItem>
get() = _items.toList()
}
Код работает, но Котлин становится многословным. Есть ли способ более элегантно реализовать задуманное? Можно через классический способ с использованием простых методов, но хочется сохранить стилистику прямого обращения к полям.