lateinit:延迟初始化属性与变量

由于非空对象必须在构造初始化完成之前初始化,但是使用 lateinit 修饰该对象可以延迟初始化

public class MyTest {
    lateinit var subject: TestSubject

    fun setup() {
        subject = TestSubject()
    }

    fun test() {
        subject.method()  // 直接解引用
    }
}

要检测一个 lateinit var 是否已经初始化过,请在该属性的引用上使用 .isInitialized:

if (foo::bar.isInitialized) {
    println(foo.bar)
}

你可能感兴趣的:(lateinit:延迟初始化属性与变量)