如何执行伴生对象 Lateinit 初始化检查

Ely*_*lye 5 kotlin

如果我有一个 Lateinit 变量,我可以检查它是否使用 (this::lateInitVar.isInitialized) 进行初始化,如/sf/answers/3350232651/中所示

但是,如果该变量是伴随对象,我该怎么办?

例如

class MyClass {

    companion object {
        lateinit var myGlobalLateInit: String
    }

    lateinit var myLocalLateInit: String

    fun settingVariable() {
        if (!this::myLocalLateInit.isInitialized) {
            myLocalLateInit = "I am set"
        }

        if (!MyClass::myGloablLateInit.isInitialized) { // This line will error out. How could I set it?
            myGloablLateInit = "I am set"
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

Ale*_*nov 7

您可以将其提取到伴随对象内的函数中:

class MyClass {

    companion object {
        lateinit var myGlobalLateInit: String

        fun isMyGlobalLateInitInitialized() = ::myGlobalLateInit.isInitialized
    }

    fun settingVariable() {
        if (!isMyGlobalLateInitInitialized()) {
            myGlobalLateInit = "I am set"
        }

    }

}
Run Code Online (Sandbox Code Playgroud)