38-判空操作符
4.10.2 判空操作符
在Kotlin中,判断一个对象是否为空主要有两种方式,一种和Java语言一样,使用if-else语句进行判空;另一种使用操作符?进行空判断。
// 在Java语言中我们使用的判空方法
var b: String = "abc"
if (b != null && b.length > 0) {
println("String of length ${b.length}")
} else {
println("Empty string")
}
// Kotlin,可空类型的判断
println("String of length ${b?.length}")
需要注意的是,在条件语句中使用null检查时,要求这个被判断对象的内容是不可变的。即在检查变量的null值时,要求这个变量是没有经过修改的局部变量;如果判断条件是属性,则要求它是一个使用val声明的属性,并且该属性没有被子类重写。
如果判断条件是一个链式表达式,只要属性链中任何一个属性为null,则整个表达式就会返回为null。代码如下。
bob?.department?.head?.name //任何一个为null,则返回为null
如果操作的是一个数组,而且不对数组的非空值执行某个操作,则判空操作符可以与let一起使用。代码如下。
val listWithNulls: List<String?> = listOf("A", null)
for (item in listWithNulls) {
item?.let { println(it) } //输出A并忽略null
}