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
,这很明显,因为当应用程序启动时 oldValue
是 NULL
。
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
我有一个关于 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
,这很明显,因为当应用程序启动时 oldValue
是 NULL
。
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