1

我有一个关于 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()
    }
}

它抛出 a NullPointerException,这很明显,因为应用程序启动时oldValueNULL.

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

谢谢你的帮助。

4

1 回答 1

1

您正在使用可避免的安全呼叫NullPointerException

option 是安全调用操作符,写成?.

如果其中的任何属性为 null ,则返回 null

第二个选项非空断言运算符抛出异常

这 !!操作员

非空断言运算符 (!!) 将任何值转换为非空类型,如果值为空则抛出异常

于 2020-01-19T15:20:24.403 回答