Kotlin-空指針檢查

Kotlin搞空指針檢查
現(xiàn)象:java存在問題,大量的崩潰是空指針異常。
原因:java的空指針異常是一種運(yùn)行時(shí)異常,不會(huì)在編譯過程中發(fā)現(xiàn),所以難以避免
Kotlin的解決之道:搞了一個(gè)空指針檢查。Kotlin默認(rèn)所有的參數(shù)和變量不可為空。

//study 默認(rèn)不能傳空
fun doStudy(study: Study){
    study.readBooks()
    study.doHomework()
}
//這么寫會(huì)直接報(bào)異常
doStudy(null)

怎么傳入一個(gè)可為空的值,

fun doStudy(study: Study?){
    study.readBooks()
    study.doHomework()
}

這樣study.readBooks()就報(bào)錯(cuò)了,因?yàn)閟tudy可能為null
解決的辦法:?.,表示當(dāng)study不為空的時(shí)候執(zhí)行后面的方法。

fun doStudy(study: Study?){
    study?.readBooks()
    study?.doHomework()
}

那么我每次都要寫?.來表示study不為空的時(shí)候再執(zhí)行嗎?
kotlin提供了一個(gè)let函數(shù)

study?.let { 
        it.readBooks()
        it.doHomework()
    }

如果我在函數(shù)的調(diào)用處已經(jīng)判斷過study不為空,我非常確定study不可能為空,那么可以使用!!.斷言來表示

study!!.readBooks()

kotlin中的三目運(yùn)算符的表現(xiàn)形式也變了,當(dāng)?:左邊的不為空的時(shí)候則執(zhí)行左邊的表達(dá)式,當(dāng)左邊的表達(dá)式為空,則用右邊的來替換。

fun  test(){
    val t:String="sssssss"
    fun getTextLength(text:String?)=text?.length?:0
    println(getTextLength(t))
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、可空類型系統(tǒng) Kotlin在編譯時(shí)判空檢查的機(jī)制幾乎杜絕了空指針異常,雖然編譯時(shí)判空機(jī)制有時(shí)候會(huì)導(dǎo)致代碼變得比...
    code希必地閱讀 1,703評(píng)論 0 1
  • 一、可空類型系統(tǒng) Kotlin默認(rèn)所有的參數(shù)和變量都不可為空。Int 表示不可為空的整型Int? 表示可為空的...
    大漠孤煙直_v閱讀 950評(píng)論 3 1
  • Android 第二章-Kotlin 入門 運(yùn)行Kotlin 使用IDEA創(chuàng)建一個(gè)Kotlin項(xiàng)目,可以運(yùn)行獨(dú)立K...
    好夢(mèng)哈姆雷特閱讀 1,341評(píng)論 0 2
  • Kotlin相較于java的一大優(yōu)勢(shì)就是可以減少空指針的出現(xiàn),變量的type需要指定是否能為空,不帶?的type不...
    yangweigbh閱讀 954評(píng)論 0 51
  • 1.變量與函數(shù) val:用于聲明不可變的變量,這種變量在初始賦值之后就再也不能重新賦值,對(duì)應(yīng) Java 中的 fi...
    青年心路閱讀 1,074評(píng)論 0 0

友情鏈接更多精彩內(nèi)容