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