我有一个声明为
的变量private lateinit var apiDisposable: Disposable
然后使用onPause()
方法,
override fun onPause() {
super.onPause()
if (!apiDisposable.isDisposed)
apiDisposable.dispose()
}
但是我明白了
kotlin.UninitializedPropertyAccessException:lateinit属性 apiDisposable尚未初始化
谁能告诉我如何检查此变量是否已初始化?是否有类似isInitialised()
任何帮助将不胜感激
答案 0 :(得分:9)
if(::apiDisposable.isInitialized)
将解决您的问题。
通常
::<lateinit variable name>.isInitialized
用于检查它是否已初始化。
答案 1 :(得分:6)
将您的属性声明为可空类型的简单属性:
private var apiDisposable: Disposable? = null
使用安全调用符号调用方法:
override fun onPause() {
super.onPause()
apiDisposable?.dispose()
}
lateinit
保留给保证可以初始化的变量,如果您不是这种情况,请不要使用它。