Kotlin默认所有参数和变量都不为空,那么如果需要输入参数和变量为空该怎么办呢?
很简单,在类的后面加上一个问号。比如Int表示输入不可为空的整形,那么Int?表示输入可为空的整形。
但将参数改成可空的类型时,调用参数的方法可能会造成空指针异常,Kotlin在这种情况下不允许编译通过,那要如何解决呢?只要把空指针异常处理掉就可以了,比如做个判断处理(添加if判断语句)就能正常编译通过了。但如果每处检查代码都使用if判断语句,则会让代码变得比较啰嗦,而且if语句处理不了全局变量的判空问题,接下来介绍一些Kotlin提供的一系列辅助工具。
?.操作符 ,这个操作符的作用就是当对象不为空时正常调用相应的方法,当对象为空时则什么都不做。比如以下的判空处理代码:
if(a!=null){
a.doSomething()
}
使用?.操作符可简化成:
a?.doSomething()
?:操作符,这个操作符的左右俩边都接收一个表达式,如果左边表达式的结果不为空则输出左边表达式的结果,否则就输出右边的结果。观察如下代码:
val c=if(a!=null){
a
} else{
b
}
这段代码的逻辑使用?:操作符可简化为:
val c=a?:b
不过Kotlin的空指针检查机制并不是那么智能,有时候我们可能从