在Kotlin数据类中,有没有办法使私有setter和公共getter?
data class Test(var attribute: String) {
// attribute can be mutated inside this class
// but outside only readable ?
}
在Kotlin数据类中,有没有办法使私有setter和公共getter?
data class Test(var attribute: String) {
// attribute can be mutated inside this class
// but outside only readable ?
}
一个简单的方法是拥有一个私有变量,然后提供一个公共属性来委托它:
data class Test (private var attribute_ : String) {
val attribute: String get() = attribute_
}
为了补充其他答案的背景:
没有直接在构造函数中实现这一点的方法,尽管已经提出了几个关于如何将其添加到语言中的建议;请参见此处。
如果它不是数据类,我建议采用以下替代方案:
class Test(_attribute: String) {
var attribute = _attribute
private set
}
那种方法只在对象中存储一个值,因此略微更加高效。
但由于这是一个数据类,所以不可能这样做。(数据类不能在其主构造函数中拥有非属性成员。)因此,另一个答案的建议似乎是最好的。