UNRESOLVED_REFERENCE未解决的参考:isInitialized

我试图使用Kotlin的检查lateinit属性状态的新功能,但得到了这个编译时错误Unresolved reference: isInitialized

我已经用kotlin_version kotlin_version = '1.2.0-beta-31' (android studio版本为3.0)的kotlin版本来配置我的build.gradle文件,并且还用相同的版本更新了kotlin插件。 这是我的代码片断,我正在使用isInitialized检查。

还包括一个反映库

 compile group: 'org.jetbrains.kotlin', name: 'kotlin-reflect', version: '1.2.0-beta-31' 

 lateinit var k: SomeObjectType fun instance(): SomeObjectType { if (::k.isInitialized) { k = SomeObjectType() } return k } 

这是一个在这里报告的bug,在v1.2-rc-1中发布

更新: Kotlin 1.2 RC似乎是'1.2.0-rc-39',所以如果你更新你的插件并使用这个版本,你的问题应该被解决。

作为一个解决方法,直到你安装rc-1,在这个项目中可以显示前缀变量this:: works。

 package com.example.john.so2 import android.support.v7.app.AppCompatActivity import android.os.Bundle data class SomeObjectType(val value: String) lateinit var k: SomeObjectType class MainActivity : AppCompatActivity() { lateinit var k: SomeObjectType fun instance(): SomeObjectType { if (this::k.isInitialized) { return k } else { return SomeObjectType("k was not initialized") } } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) println("instance = ${instance()}") k = SomeObjectType("k was initialized") println("instance = ${instance()}") } } 

这产生:

 11-03 19:31:14.496 31982-31982/com.example.john.so2 I/System.out: instance = SomeObjectType(value=k was not initialized) 11-03 19:31:14.496 31982-31982/com.example.john.so2 I/System.out: instance = SomeObjectType(value=k was initialized) 

顺便说一句,我留下了我原来的答案,因为它强调了正确的语法在“尝试在线”

你的代码是否有效的Kotlin代码? 我试了下,似乎按预期工作。

 data class SomeObjectType(val value: String) lateinit var k: SomeObjectType fun instance(): SomeObjectType { if (::k.isInitialized) { return k } else { return SomeObjectType("k was not initialized") } } fun main(args: Array<String>) { println("inst = ${instance()}") k = SomeObjectType("was initialized") println("inst = ${instance()}") } 

生产:

 inst = SomeObjectType(value=k was not initialized) inst = SomeObjectType(value=was initialized) 

当我尝试了上面的东西时:(用添加的class SomeObjectType()

 class SomeObjectType() lateinit var k: SomeObjectType fun instance(): SomeObjectType { if (::k.isInitialized) { instance = SomeObjectType() } return instance } 

它抱怨instance = SomeObjectType()行和return instance行,我认为这对我有意义。 第5行是instance = SomeObjectType() ,第7行是return instance行。

 Error:(5, 8) Function invocation 'instance()' expected Error:(5, 8) Variable expected Error:(7, 11) Function invocation 'instance()' expected 

这里是在线例子的链接。 工作的例子 , 破碎的例子