我无法在语言定义中找到解释Kotlin中类的初始化的任何内容.
import java.util.Properties
fun main(args: Array<String>) {
val out = MyClass()
out.fn()
}
class MyClass {
private val a = Properties() // 1
init {
fn()
}
public fun fn() {
println("Fn called. a = $a")
}
// private val a = Properties() // 2
}
Run Code Online (Sandbox Code Playgroud)
运行此程序的结果会根据属性是在(1)还是在(2)初始化而更改.
我很惊讶声明顺序与语言相关,并且想了解这背后的决定.我的期望是在调用构造函数体之前初始化属性.