Kotlin:如何在构造函数中访问属性

Kir*_*man 1 delegates properties kotlin

考虑以下课程:

class Test() {
    init {
        log(foo)
    }

    val foo = "Bar"
}
Run Code Online (Sandbox Code Playgroud)

当我实例化Test时,它产生一个NullPointerException,因为foo似乎没有被初始化.这种行为是否真的有意?有解决方法吗?

And*_*lav 5

该类的主体从上到下执行.如果您希望在属性初始化后运行一段代码,则应将其放低:

class Test() {
    val foo = "Bar"

    init {
        log(foo)
    }
}
Run Code Online (Sandbox Code Playgroud)