Kotlin 的空安全特性主要用于避免在編譯時期出現空指針異常(NullPointerException)。以下是一些 Kotlin 空安全處理的常見用途:
非空類型:使用 non-null
類型注解,可以確保變量或返回值不會為 null。例如:
val name: String = "Alice" // 非空類型
可空類型:使用 nullable
類型注解,可以表示變量或返回值可能為 null。例如:
val age: Int? = null // 可空類型
安全調用操作符:使用 ?.
操作符,可以在調用可空對象的成員時避免空指針異常。例如:
val name = user?.name // 如果 user 為 null,則 name 被賦值為 null
空合并操作符:使用 ?:
操作符,可以在可空表達式中進行安全的空值判斷。例如:
val displayName = user?.name ?: "Unknown" // 如果 user 為 null,則 displayName 被賦值為 "Unknown"
Elvis 操作符:與空合并操作符類似,但只適用于兩個可空表達式。例如:
val displayName = user?.name ?: "Unknown"
val age = user?.age ?: 0 // 如果 user 為 null,則 age 被賦值為 0
非空斷言操作符:使用 !!
操作符,可以強制將可空類型轉換為非空類型,但可能會導致空指針異常。例如:
val name = user!!.name // 如果 user 為 null,則拋出 NullPointerException
空值檢查:使用 isNull()
和 isNotNull()
函數,可以檢查可空對象是否為 null。例如:
if (user != null) {
println(user.name)
} else {
println("User is null")
}
擴展屬性:可以為可空類型和非空類型定義擴展屬性,以便在訪問屬性時進行空安全處理。例如:
extension String? {
val isEmpty: Boolean
get() = this == null || this.trim().isEmpty()
}
val name: String? = "Alice"
println(name.isEmpty()) // 輸出 true
通過這些空安全特性,Kotlin 可以在編譯時期捕獲許多潛在的空指針異常,從而提高代碼的健壯性和可讀性。