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
这里是在线例子的链接。 工作的例子 , 破碎的例子