9

我想使用这个功能

示例中最简单的方法对我不起作用:

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

但我越来越

unresolved reference lateinitVar

我在 Android-Studio 中通过 gradle 使用 Kotlin 1.2.10(也安装了 Kotlin 1.2.10 插件)

4

1 回答 1

32

您的代码中没有带有名称的变量lateinitVar,因此出现错误。再看例子:

this::lateinitVar.isInitialized

lateinitVar中定义了一个变量this,调用该函数。示例中的代码片段可以展开(清单开头的小加号),如下所示:

class Foo {
    lateinit var lateinitVar: String

    fun initializationLogic() {
        println("isInitialized before assignment: " + this::lateinitVar.isInitialized)
        lateinitVar = "value"
        println("isInitialized after assignment: " + this::lateinitVar.isInitialized)    

    }
}

这可能会更清楚。

另外,请注意,lateinit不能应用于val但只能应用于var.

于 2017-12-17T23:28:26.737 回答