这个例子来自我正在学习的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
}
}
var <propertyName>[: <PropertyType>] [= <property_initializer>]
[<getter>]
[<setter>]
val
仅用于读取,表示getter,var
用于非getter()
和setter()
。class Company {
var name: String = "Defaultvalue"
}
class Company {
var name: String = "defaultvalue"
get() = field // getter
set(value) { field = value } // setter
}
如果您想在Car
类中保存数据,也可以使用Kotlin的data class
。这样,您就不需要定义getter和setter了。
data class Car(var speed: Int)
更多信息请查看https://kotlinlang.org/docs/reference/properties.html#getters-and-setters
class Car(speed: Int)
而不是class Car(var speed : Int)
,后者会创建重复且冲突的声明。 - Brian McFarland