我觉得kotlin做的最好的一点就是空指针检查了,可以避免太多的莫名其妙的bug了
基础知识
kotlin中默认所有参数和变量都是不可为空的。
可空类型系统
因为kotlin中默认都是不可空的,但是实际业务中,我们真的需要一个变量为空时,在类后面加一个?
即可,例如:
var a : Int? = 10
fun doSomeThing(value : String?)
判空辅助工具
?.
如果对象不为空,正常调用对应方法;如果对象为空,则什么都不做
如果没有这个工具,我们经常需要做的一个动作如下:
if (xxx != null) {
//xxx.doSomeThing()
}
如果有了?.
即可以这样写,大大美化,且节省工作量
xxx?.doSomeThing()
?:
如果左边表达式不为空,返回左边表达式;反之,返回右边表达式
例如:
var a :Int? = 10
var b :Int? = null
var c = a ?: 0
var d = b ?: 0
println("c = $a, d = $d")
打印结果如下:
c = 10, d = 0
!!!
非常确信对象不为空
虽然有这个工具,但是我还是建议不要用这个工具来解决android studio的编译报错问题
a!!!.doSomething()
到这里其实空指针检查的知识已经基本完了,如果需要巩固一下,可以看下《第一行代码Android》kotlin总结之函数专题文章中的let函数