在Kotlin中!!跟?都是用於判斷空參數異常的
?.意思是這個參數可以為空,並且程序繼續運行下去
!!.的意思是這個參數如果為空,就拋出異常
下面給大家舉個簡單的例子,在JAVA中判斷一個參數非空是這樣寫的:
NullClass nullClass = null;
if (nullClass!=null) {
ullClass.nullFun();
}
將這段代碼轉換成Kotlin之后呢
val nullClass: NullClass? = null
nullClass?.nullFun()
短短兩行就表述完了
在一開始的時候我們聲明了一個類,並且在類名后面加了一個? 意思就是這個類可以為空,然后在下面用到這個類里面的一個方法時又加了一個問號,意思就是,當程序運行到這一行時,如果這個參數為空,就跳過這一行,程序繼續執行下去
所以?.的用法就是相當於Java里的if()判斷null
if (nullClass!=null) {//如果判斷為空
//跳過這一行,程序繼續執行
nullClass.nullFun();
}
一般?.的用法是:
在新建一個參數的類名后面加一個? 表示這個參數可以為空.
還有就是在用到這個參數的時候后面加? 表示空參數就跳過並且程序繼續執行
而!!只用於用到這個參數的時候在后面加!!,表示空參數就拋出異常
還是相同的例子:
val nullClass: NullClass?=null
nullClass!!.nullFun()
換成Java代碼就是
NullClass nullClass = null;
if (nullClass!=null) {
nullClass.nullFun();
}else {
throw new NullPointerException();
}
這里大家應該都能看明白了,在第二行參數后面加個!!,意思就是當程序執行到這行,判斷這個參數如果是空參數,就拋出異常
所以!!.的用法就是相當於Java里的if()else()判斷null
if (nullClass!=null) {//如果判斷為空
nullClass.nullFun();
}else {//拋出空參數異常
throw new NullPointerException();
}
————————————————
原文鏈接:https://blog.csdn.net/wuditwj/article/details/84302715