📜  Kotlin 空值安全(1)

📅  最后修改于: 2023-12-03 15:17:10.073000             🧑  作者: Mango

Kotlin 空值安全

在 Java 中,空指针异常是一个常见的问题,而 Kotlin 希望解决这个问题,并提供更好的空值安全性。

Kotlin 通过以下两种方式来保证空值安全:

1. 可空类型

在 Kotlin 中,所有的类型都默认非空。如果要将一个变量定义为可空类型,需要在类型后面加上 ?。例如:

var str: String? = null

这里的 str 是一个 String 类型的变量,但是它可以存储 null 值。如果我们尝试调用一个可空类型变量的方法或属性,则需要使用安全调用运算符 ?. 来判断该变量是否为 null。例如:

val length = str?.length

这里的 ?. 表示如果 str 不为 null,则返回 length,否则返回 null。在这个例子中,如果 strnull,则 length 的值也为 null

如果我们确定一个可空类型变量不为 null,可以使用非空断言运算符 !!,将变量强制转换为非空类型。例如:

val length = str!!.length

这里的 !! 表示如果 str 不为 null,则返回 length,否则抛出 NullPointerException

2. 安全转换

在 Kotlin 中,我们可以使用安全转换运算符 as? 将一个值转换为另一个类型的可空类型。如果转换不成功,则返回 null。例如:

val obj: Any = "Hello"
val str: String? = obj as? String

这里的 as? 表示将 obj 转换为 String 类型,如果转换成功,则返回 String 类型的可空类型,否则返回 null

总的来说,Kotlin 的空值安全性可以有效避免空指针异常的问题,同时使用可空类型以及安全转换运算符也是 Kotlin 语言的一大特色,让我们在编写代码时更加的安全、简洁、优雅。