我对科特林是新来的。我想知道下面代码中这两个!!
和?
之间的区别。
下面有两个片段:第一个片段使用!!
表示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
的非空值,如果a
为null
,则抛出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中会做什么呢?