我需要像这样创建一个数据类
data class Cat(var toys:Int=3, val type:String):Animal(){
...
}
Animal 是一个抽象类,具有眼睛和腿等字段。
我不希望调用者能够直接设置玩具。但我希望能够用玩具做一些工作,比如
fun addQuota(){toys+=4}
我如何干净地完成这个?我仍然想要一个公共(public) getter,一个私有(private) setter,但我不希望变量是最终的。而且,这个数据类是 Room 的实体。
最佳答案
您可以通过使用构造函数的属性作为 toys
的支持字段来做到这一点。属性(property):
data class Cat(val type: String, private var toysField: Int = 3 ):Animal(){
var toys = toysField
private set(value){
toysField = value
}
fun addQuota(){toys += 4}
}
abstract class Animal
我希望这适用于房间。
来源 https://discuss.kotlinlang.org/t/private-setter-for-var-in-primary-constructor/3640/10
关于android - 如何在 Kotlin 中将 setter 设为私有(private),用于非最终变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53489171/