UNRESOLVED_REFERENCE Unresolved link: isInitialized

I am trying to use the new Kotlin function to check the status of the lateinit property, but got this compile-time error Unresolved reference: isInitialized

I installed my build.gradle file with kotlin version kotlin_version = '1.2.0-beta-31' (Android version 3.0) and also updated kotlin plugin with the same version. this is my piece of code where i use isInitializedcheck.

a reflection library was also included

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
}
+6
source share
4 answers

This is a bug reported here and released in v1.2-gs-1

: Kotlin 1.2 RC "1.2.0-rc-39", , , .

rc-1, this:: , .

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)

, , , "try-online"

+1

? , , , .

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

-. ,

0

isInitialized , , Kotlin 1.2

Project Module Gradle:

  • Gradle :

    ext.kotlin_version = "1.2.21"

  • Gradle :

    compile 'org.jetbrains.kotlin: kotlin-stdlib-jdk7: 1.2.21'

, :

"org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion"
0

Project_level.gradle

buildscript {
    ext.kotlin_version = '1.2.30'

    ...
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    ...
    }
}

App_level.gradle

dependencies {
    ...
    implementation"org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    ...
}

class Foo() {

    lateinit var theVariable: String

    // this is required to access isInitialized
    fun foo() {
        this::theVariable.isInitialized
    }
}
0

All Articles