Как выполнить сопутствующий объект lateinit - проверка инициализации - PullRequest
0 голосов
/ 09 марта 2020

Если у меня есть переменная lateinit, я могу проверить, инициализирована ли она с помощью (this :: lateInitVar.isInitialized), как показано в { ссылка }

Однако, если переменная является объект-компаньон, как я могу это сделать?

например

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 Ответ

1 голос
/ 09 марта 2020

Вы можете извлечь его в функцию внутри объекта-компаньона:

class MyClass {

    companion object {
        lateinit var myGlobalLateInit: String

        fun isMyGlobalLateInitInitialized() = ::myGlobalLateInit.isInitialized
    }

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

    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...