【发布时间】:2020-12-02 21:06:01
【问题描述】:
我希望我的类有一个字段,该字段为所有公共访问返回一个不可变列表,但在对象实例内部我希望该列表是可变的,因此我可以向其中添加元素。
class GrammarParser {
private val grammars: List<Grammar> = mutableListOf()
get() = field.toList()
}
试试
class GrammarParser {
private val _grammars: MutableList<Grammar> = mutableListOf()
val grammars: List<Grammar>
get() = this._grammars.toList()
}
我试过了,但不确定这是否被认为是好的做法?
【问题讨论】:
-
以下链接中已经回答了问题:stackoverflow.com/questions/30348292/…。除非你在 Kotlin 语法中需要它?
-
@bramdc 转换在第一个示例中不起作用,因为
get() = field.toMutableList()会显示编译器错误,因为grammars的返回值是List<Grammar>而不是MutableList<Grammar>已经尝试过。顺便说一句,Kotlin 语法应该是这样的。
标签: java kotlin collections