当前位置:嗨网首页>书籍在线阅读

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
}