Kotlin中 !!. 跟 ?. 的區別和用法

在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();
}

以上就是本人對kotlin中!!.跟?.的看法,如有不對之處還請各位指出

轉載:https://blog.csdn.net/wuditwj/article/details/84302715

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章