1

次のクラスを検討してください。

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

    val foo = "Bar"
}

Test を instatiate すると、foo が初期化されていないように見えるため、NullPointerException が生成されます。この動作は実際に意図されたものですか? 回避策はありますか?

4

1 に答える 1

5

クラスの本体は上から下に実行されます。プロパティの初期化後にコードを実行したい場合は、それを下に配置する必要があります。

class Test() {
    val foo = "Bar"

    init {
        log(foo)
    }
}
于 2014-10-20T13:48:53.137 に答える