该示例来自我正在做的 Kotlin 课程:
class Car {
var speed: Int = 0
get() = field
set(value) {
field = value
}
}
如果我喜欢使用这样的主构造函数:
class Car(var speed: Int)
在这种情况下,我将如何编写 getter / setter?
该示例来自我正在做的 Kotlin 课程:
class Car {
var speed: Int = 0
get() = field
set(value) {
field = value
}
}
如果我喜欢使用这样的主构造函数:
class Car(var speed: Int)
在这种情况下,我将如何编写 getter / setter?
您不能在构造函数中编写 getter/setter,您可以执行以下操作:
class Car(speed: Int) {
var speed = speed
get() = field
set(value) {
field = value
}
}
@JvmField
注释来限制编译器不要自动生成 getter/setter 并自己实现一个class Car(@JvmField private var speed: Int) {
fun getSpeed() = speed
fun setSpeed(value: Int) { speed = value }
}
您可以使用构造函数中的值初始化您的属性:
class Car(speed: Int) {
var speed: Int = speed
get() = field
set(value) {
field = value
}
}
If your Car
is just a data holder, you could make it a data class
, which generates a bunch of methods for you, see this example:
data class Car(var speed: Int)
You can use a parameterized constructor and the setters as follows
fun main() {
// use a parameterized constructor
var car = Car(240)
println("${car.speed} km/h")
// use the setter
car.speed = 120
println("${car.speed} km/h")
}
That would output:
240 km/h
120 km/h