问题
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