gpt4 book ai didi

kotlin - 有什么区别!!和 ?在 Kotlin ?

转载 作者:IT老高 更新时间:2023-10-28 13:26:41 26 4
gpt4 key购买 nike

我是 Kotlin 的新手。我想知道下面代码中这两个 !!? 之间的区别。

下面有两个片段:第一个使用 !! 表示 mCurrentDataset,另一个使用 ? 表示相同的变量。

if(!mCurrentDataset!!.load(mDataSetString.get(mCurrentDataSelectionIndex), STORAGE_TYPE.STORAGE_APPRESOURCE))
{
Log.d("MyActivity","Failed to load data.")
return false
}

if(!mCurrentDataset?.load(mDataSetString.get(mCurrentDataSelectionIndex), STORAGE_TYPE.STORAGE_APPRESOURCE)!!)
{
Log.d("MyActivity","Failed to load data.")
return false
}

最佳答案

正如 Kotlin reference 中所说, !! 是 NPE 爱好者的选择:)

a!!.length

将返回 a.length 的非 null 值,如果 anull,则抛出 NullPointerException :

val a: String? = null
print(a!!.length) // >>> NPE: trying to get length of null

a?.length

如果 a 不是 null 则返回 a.length,否则返回 null:

val a: String? = null
print(a?.length) // >>> null is printed in the console

总结一下:

+------------+--------------------+---------------------+----------------------+
| a: String? | a.length | a?.length | a!!.length |
+------------+--------------------+---------------------+----------------------+
| "cat" | Compile time error | 3 | 3 |
| null | Compile time error | null | NullPointerException |
+------------+--------------------+---------------------+----------------------+

可能有用:What is a NullPointerException?

关于kotlin - 有什么区别!!和 ?在 Kotlin ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44536114/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com