在 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()