对象的 init 块何时被调用?

Has*_*isi 9 kotlin

我试图使用下面的代码知道何时在 Kotlin 中调用initblock object,但我在控制台中没有得到任何结果:

fun main(args: Array<String>) {
    TestObj
    TestObj
}

object TestObj {
    var count = 0

    init {
        fun howManyTimes() {
            println(++count)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

hta*_*oya 17

迪米特里的答案对于您的问题是正确的,但是您的具体问题的正确答案是:

如果是class实例化,则init在调用构造函数之前执行。

如果它是一个object,根据 Kotlin 文档,每当第一次调用(单例)对象时都会调用它,因为静态对象是延迟初始化的。