Kotlin筆記 空指針檢查

Kotlin相較于java的一大優(yōu)勢就是可以減少空指針的出現(xiàn),變量的type需要指定是否能為空,不帶?的type不能為空

var a: String = "abc"
a = null // compilation error
var b: String? = "abc"
b = null // ok

不為空的變量可以調用方法,但是為空的變量使用前顯式需要檢查是否為空

val l = a.length //合法

val l = b.length // 不合法

檢查是否為空

  • option1
val l = if (b != null) b.length else -1

或者

if (b != null && b.length > 0) {
    print("String of length ${b.length}")
} else {
    print("Empty string")
}
  • option2

safe call 操作符

b?.length

如果b不為空,返回 b.length,如果b為空,返回null

safe call可以和let一起使用,只對非空元素進行操作

val listWithNulls: List<String?> = listOf("A", null)
for (item in listWithNulls) {
     item?.let { println(it) } // prints A and ignores null
}

Elvis 操作符

?:如果符號左邊的表達式不為空,則返回左邊的表達式,否則返回右邊的表達式

val l = b?.length ?: -1

如果b?.length不為空,則返回它,如果為空,返回-1

returnthrow可以放在elvis操作符的右邊

fun foo(node: Node): String? {
    val parent = node.getParent() ?: return null
    val name = node.getName() ?: throw IllegalArgumentException("name expected")
    // ...
}

!!操作符

b!!,如果b不為空,則返回b,如果b為空,則throw NullPointerException。

val l = b!!.length

使用filterNotNull來過濾集合中空元素

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容