天天看點

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中!!.跟?.的看法,如有不對之處還請各位指出