isInitialized – Поле поддержки lateinit var недоступно на данный момент

Я пытаюсь проверить, было ли свойство lateinit инициализировано.
В Kotlin 1.2 мы теперь имеем isInitialized метод для этого. Он работает, когда я делаю это в классе, где объявляется свойство lateinit. Но когда я пытаюсь вызвать это из другого класса, я получаю следующее предупреждение:

В этот момент недоступно поле «lateinit var foo: Bar»

Мой класс модели (скажем, Person ) написан на Java
Два других класса (скажем, Test2 и Test2 ) написаны в Kotlin

Пример:

 class Test1 { lateinit var person: Person fun method() { if (::person.isInitialized) { // This works } } } 

 class Test2 { lateinit var test1: Test1 fun method() { if (test1::person.isInitialized) { // Error } } } 

Есть ли шанс получить эту работу?

Моим текущим обходным путем является метод в isInitialized который возвращает isInitialized из свойства person .

 fun isPersonInitialized(): Boolean = ::person.isInitialized //in Test2: if (test1.isPersonInitialized()) { // Works } 

Вы можете проверить, было ли свойство lateinit инициализировано, lateinit следующим образом:

 class Person { lateinit var name: String } class Test { lateinit var person1: Person lateinit var person2: Person init { try { println(person1.name) } catch(e: UninitializedPropertyAccessException) { // is thrown because person1 has not been initialized println("ups") } person2 = Person() try { println(person2.name) } catch(e: UninitializedPropertyAccessException) { // is thrown because person2.name has not been initialized println("ups") } } } fun main(args: Array<String>) { Test() // ups ups }