Kotlin 中 IF 比较的 Null Safety

Null Safety on IF comparison in Kotlin

我有一个关于 Kotlin 如何管理 NULL 比较安全的问题。 我有这个代码:

imageFile.addListener { _ , oldValue : File?, newValue : File? ->
    run{
        if(oldValue?.absolutePath != newValue?.absolutePath) loadFile()
    }
}

它工作正常,但是如果我把它改成

imageFile.addListener { _ , oldValue : File?, newValue : File? ->
    run{
        if(oldValue!!.absolutePath != newValue?.absolutePath) loadFile()
    }
}

它抛出一个 NullPointerException,这很明显,因为当应用程序启动时 oldValueNULL

Kotlin 第一次如何管理这种比较?

感谢您的帮助。

您正在使用 safe call 避免 NullPointerException:

option is the safe call operator, written ?.

returns null if any of the properties in it is null.

第二个选项not-null assertion operator抛出异常

The !! Operator

the not-null assertion operator (!!) converts any value to a non-null type and throws an exception if the value is null