Search code examples
androidkotlinkotlin-lateinit

lateinitVar cannot be resolved to use isInitialized from Kotlin 1.2.10


I want to use this feature

the simplest thing like in the example does not work for me:

lateinit val foo = 1
val bar = foo::lateinitVar.isInitialized()

But I am getting

unresolved reference lateinitVar

I am using Kotlin 1.2.10 via gradle in Android-Studio (also the Kotlin 1.2.10 plugin installed there)


Solution

  • There’s no variable with name lateinitVar in your code, thus the error. Look at the example again:

    this::lateinitVar.isInitialized
    

    There’s a variable lateinitVar defined in this, which the function is called on. The code snippet in the example can be expanded (little plus sign at the beginning of the listing) and looks as follows:

    class Foo {
        lateinit var lateinitVar: String
    
        fun initializationLogic() {
            println("isInitialized before assignment: " + this::lateinitVar.isInitialized)
            lateinitVar = "value"
            println("isInitialized after assignment: " + this::lateinitVar.isInitialized)    
    
        }
    }
    

    This might make it more clear.

    Also, be aware that lateinit can’t be applied to val but only var.