Kotlin-空指针检查

2021-03-20  本文已影响0人  在下陈小村

Kotlin搞空指针检查
现象:java存在问题,大量的崩溃是空指针异常。
原因:java的空指针异常是一种运行时异常,不会在编译过程中发现,所以难以避免
Kotlin的解决之道:搞了一个空指针检查。Kotlin默认所有的参数和变量不可为空。

//study 默认不能传空
fun doStudy(study: Study){
    study.readBooks()
    study.doHomework()
}
//这么写会直接报异常
doStudy(null)

怎么传入一个可为空的值,

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

这样study.readBooks()就报错了,因为study可能为null
解决的办法:?.,表示当study不为空的时候执行后面的方法。

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

那么我每次都要写?.来表示study不为空的时候再执行吗?
kotlin提供了一个let函数

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

如果我在函数的调用处已经判断过study不为空,我非常确定study不可能为空,那么可以使用!!.断言来表示

study!!.readBooks()

kotlin中的三目运算符的表现形式也变了,当?:左边的不为空的时候则执行左边的表达式,当左边的表达式为空,则用右边的来替换。

fun  test(){
    val t:String="sssssss"
    fun getTextLength(text:String?)=text?.length?:0
    println(getTextLength(t))
}
上一篇下一篇

猜你喜欢

热点阅读