Kotlin 中 IF 比较的零安全性



我有一个关于 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 如何在第一次进行这种比较?

感谢您的帮助。

您正在使用避免NullPointerException的安全调用:

选项是安全呼叫运算符,书面?.

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

第二个选项非空断言运算符引发异常

这!!算子

非空断言运算符 (!!( 将任何值转换为非空类型,并在值为 null 时引发异常

最新更新