Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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)

like image 370
ligi Avatar asked Dec 17 '17 23:12

ligi


1 Answers

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.

like image 62
s1m0nw1 Avatar answered Nov 05 '22 16:11

s1m0nw1