Kotlin 空值处理

Demo

?

将类型标记为可空,在Kotlin中变量默认非空,如果该变量可空,需要在类型后添加符号?

var str: String = null // 编译器报错

str变量值可能为null的话,必须在变量类型后添加?

var str: String? = null // 编译通过
?.安全调用符

str变量可能为null

var str: String? = null // 编译通过

当一个可空的变量直接调用API时,编译器会报错

str.toInt() // 编译报错

解决办法是使用安全调用符?.调用API.

str?.toInt() // 编译通过
// (?.)调用API相当于
if (str != null) {
    str.toInt()
}
安全调用符调用API后值的接收

当使用?.调用API后,返回值也是有可能为null

// strToInt接收到可能为null的值,但是strToInt变量当前是非空标记.
var strToInt: Int = str?.toInt() // 编译错误

可以将strToInt也标记为可空类型

var strToInt: Int? = str2?.toInt(); // 编译通过

另外一种就是使用elvis操作符?:

// strToInt变量依然是非空类型,但是str2?.toInt()如果非空就取左侧值,如果值为空就取右侧值(elvis操作符)
// 这样一来strToInt接收的值肯定就不可能为空了.
var strToInt: Int = str2?.toInt() ?: 0;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章