在 kotlin 中使用 getter 和 setter 时出错
Error while using getters and setters in kotlin
我试图用 kotlin 编写 getter。
这是我的代码:
fun main(){
val car=Car()
print(car.myCar)
}
class Car {
var myCar: String="BMW"
get() {
return this.myCar.toLowerCase()
}
}
当我执行时,我得到了这个异常:Exception in thread "main" java.lang.WhosebugError
我在一些教程中看到他们使用 field
。
我的问题是为什么这会给我一个例外以及我为什么以及如何使用 field
fun main(){
val car=Car()
print(car.myCar)
}
class Car {
var myCar: String="BMW"
get() = field
}
你创建了一个无限循环。
var myCar: String = "BMW"
get() {
return this.myCar.toLowerCase()
}
等于
var myCar: String = "BMW"
get() = this.myCar.get().toLowerCase()
如您所见,您的“获取”函数是递归的。所以需要使用field
关键字来避免调用get()
方法:
var myCar: String = "BMW"
get() = field.toLowerCase()
我试图用 kotlin 编写 getter。 这是我的代码:
fun main(){
val car=Car()
print(car.myCar)
}
class Car {
var myCar: String="BMW"
get() {
return this.myCar.toLowerCase()
}
}
当我执行时,我得到了这个异常:Exception in thread "main" java.lang.WhosebugError
我在一些教程中看到他们使用 field
。
我的问题是为什么这会给我一个例外以及我为什么以及如何使用 field
fun main(){
val car=Car()
print(car.myCar)
}
class Car {
var myCar: String="BMW"
get() = field
}
你创建了一个无限循环。
var myCar: String = "BMW"
get() {
return this.myCar.toLowerCase()
}
等于
var myCar: String = "BMW"
get() = this.myCar.get().toLowerCase()
如您所见,您的“获取”函数是递归的。所以需要使用field
关键字来避免调用get()
方法:
var myCar: String = "BMW"
get() = field.toLowerCase()