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))
}
网友评论