Kotlin:如何使用 lateinit 属性 检查变量是否已初始化

Kotlin: How to check variable with lateinit property is initialized or not

我有一个声明为

的变量
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()

这样的方法

如有任何帮助,我们将不胜感激

if(::apiDisposable.isInitialized)

将解决您的问题。

一般来说,

::<lateinit variable name>.isInitialized用于检查是否已经初始化

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

private var apiDisposable: Disposable? = null

使用安全调用符号调用方法:

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

lateinit 保留给保证被初始化的变量,如果这不是你的情况 - 不要使用它。