android – Kotlin:如何检查带有lateinit属性的变量是否已初始化

我有一个声明为的变量

private lateinit var apiDisposable: Disposable

然后在onPause()方法中,我正在做

override fun onPause() {
    super.onPause()
    if (!apiDisposable.isDisposed)
        apiDisposable.dispose()
}

但我明白了

kotlin.UninitializedPropertyAccessException: lateinit property
apiDisposable has not been initialized

任何人都可以告诉我如何检查此变量是否已初始化?有没有像isInitialised()这样的方法

任何帮助,将不胜感激

解决方法:

将您的属性声明为可空类型的简单属性:

private var apiDisposable: Disposable? = null

使用安全呼叫表示法调用该方法:

override fun onPause() {
    super.onPause()
    apiDisposable?.dispose()
}

lateinit保留用于保证初始化的变量,如果不是这种情况 – 不要使用它.

上一篇:使用observeOn时,为什么我的RxJava Flowable不支持背压?


下一篇:RxJava2:首先替代rx.Observable方法(谓词)