当前位置: 首页 > 知识库问答 >
问题:

有什么区别!!然后呢?在科特林?

淳于恺
2023-03-14

我对科特林是新来的。我想知道下面代码中这两个!!之间的区别。

下面有两个片段:第一个片段使用!!表示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
}

共有1个答案

云正信
2023-03-14

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

a!!.length

将返回a.length的非空值,如果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 |
+------------+--------------------+---------------------+----------------------+

可能很有用:什么是NullPointerException?

 类似资料:
  • 我对这两个运算符都有基本的了解,但想知道两者之间可能导致“难以跟踪”错误的细微差异是什么。

  • 本文向大家介绍png8和png24有什么区别呢?相关面试题,主要包含被问及png8和png24有什么区别呢?时的应答技巧和注意事项,需要的朋友参考一下 PNG 8:PNG 8中的8,其实指的是8bits,相当于用2^8(2的8次方)大小来存储一张图片的颜色种类,2^8等于256,也就是说PNG 8能存储256种颜色,一张图片如果颜色种类很少,将它设置成PNG 8得图片类型是非常适合的。 PNG 2

  • 本文向大家介绍setTimeout和setInterval有什么区别呢?相关面试题,主要包含被问及setTimeout和setInterval有什么区别呢?时的应答技巧和注意事项,需要的朋友参考一下 setTimeout(fn,t),超时调用,超过时间t,就执行fn,只调用一次。 setInterval(fn,t),间歇调用,调用周期t,执行fn,可循环调用多次。 二者调用后,均返回一个数值ID,

  • 本文向大家介绍vue和angular有什么区别呢?相关面试题,主要包含被问及vue和angular有什么区别呢?时的应答技巧和注意事项,需要的朋友参考一下 https://www.cnblogs.com/scode2/p/8820613.html

  • 本文向大家介绍htm、html、shtml三者有什么区别呢?相关面试题,主要包含被问及htm、html、shtml三者有什么区别呢?时的应答技巧和注意事项,需要的朋友参考一下 htm与html,shtm与shtml区别仅在于一个“l”。 而html与shtml区别于在shtml支持SSI指令,就是在文件里加了一段,旨在将"info.htm"的内容拷贝到当前的页面中,当访问者来浏览时,显示两个页面的

  • 在Kotlin中,val用于使变量/属性不可更改,那么final的用途是什么?正如我所知,在java中,final用于限制继承或使变量为常量,但在kotlin中,val是常量部分,那么final在kotlin中会做什么呢?