我正在尝试检查lateinit
属性是否已初始化。
在 Kotlin 1.2 中,我们现在有了这样的isInitialized
方法。当我在声明了 lateinit 属性的类中这样做时,它会起作用。但是当我尝试从另一个类中调用它时,我收到以下警告:
'lateinit var foo: Bar' 的支持字段此时不可访问
我的模型类(比方说Person
)是用 Java 编写的
另外两个类(比方说Test1
和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
}
}
}
有机会让这个工作吗?
我目前的解决方法是在 Test1 中创建一个isInitialized
从person
属性返回的方法。
fun isPersonInitialized(): Boolean = ::person.isInitialized
//in Test2:
if (test1.isPersonInitialized()) {
// Works
}