How to perform companion object lateinit is initiallize check

纵然是瞬间 提交于 2021-02-05 06:15:07

问题


If I have a lateinit variable, I could check is it initialized using (this::lateInitVar.isInitialized), as shown in https://stackoverflow.com/a/47860466/3286489

However if the variable is a companion object, how could I do so?

e.g.

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"
        }

    }

}

回答1:


You could extract it into a function inside the companion object:

class MyClass {

    companion object {
        lateinit var myGlobalLateInit: String

        fun isMyGlobalLateInitInitialized() = ::myGlobalLateInit.isInitialized
    }

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

    }

}


来源:https://stackoverflow.com/questions/60596734/how-to-perform-companion-object-lateinit-is-initiallize-check

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!