本文主要是介绍6:kotlin 空值安全(Null safety),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在Kotlin中,是可以有空值的。为了防止程序中出现空值问题,Kotlin实施了空值安全。空值安全在编译时而不是运行时检测到可能的空值问题。
空值安全是一组功能的组合,允许您:
- 明确声明程序中允许空值的地方。
- 检查空值。
- 对可能包含空值的属性或函数进行安全调用。
- 如果检测到空值,声明要采取的行动。
空值类型(Nullable types)
在kotlin
中,默认属性不支持空值,如果想要支持空值,需要在属性定义时使用?
显示的设置
fun main() {var neverNull: String = "This can't be null"
// neverNull = null // 编译报错 - Null can not be a value of a non-null type Stringvar nullable: String? = "You can keep a null here"nullable = null
}
空值检测(Check for null values)
fun describeString(maybeString: String?): String {if (maybeString != null && maybeString.length > 0) {return "字符串长度 ${maybeString.length}"} else {return "空值或者null"}
}fun main() {var nullString: String? = nullprintln(describeString(nullString)) // 空值或者null
}
实际情况下可能还要检测字符串是否是多个空格组成的
安全调用(Use safe calls)
如果想避免代码中出现空值引发错误,可以使用安全调用运算符?.
。如果对象的属性为空,安全调用运算符将返回空
fun lengthString(maybeString: String?): Int? = maybeString?.lengthfun main() { var nullString: String? = nullprintln(lengthString(nullString)) // null
}
安全调用可以采用链式编程
a?.b?.c
安全调用同样支持类方法
默认值(Use Elvis operator)
可以使用?:
运算符在检测到空值时提供一个默认值
fun main() {var nullString: String? = nullprintln(nullString?.length ?: 9) // 9
}
这篇关于6:kotlin 空值安全(Null safety)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!