Kotlin-空指针检查

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))
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容