在 Kotlin 中,非空类型是指那些不能为 null 的类型。为了处理空值,Kotlin 提供了几种方法:
?.
操作符:这个操作符允许你在需要检查空值的地方安全地访问属性或方法。如果左侧的表达式为空,那么整个表达式将返回 null。val nonNullString: String = "Hello, World!"
val nullableString: String? = null
val result = nonNullString?.length // result will be 13
val nullableResult = nullableString?.length // nullableResult will be null
!!
操作符:这个操作符用于显式地告诉编译器你确定这个值不会为空。如果值为空,将抛出 NullPointerException
。val nonNullLength = nonNullString!!.length // nonNullLength will be 13
if (nonNullString != null)
检查非空值:在访问非空类型的属性或方法之前,你可以使用 if
语句检查它们是否为空。if (nonNullString != null) {
val length = nonNullString.length // This will not throw a NullPointerException
}
let
函数:let
函数允许你在需要处理非空值的地方安全地访问属性或方法。如果左侧的表达式为空,那么整个函数将返回 null。val nonNullString: String = "Hello, World!"
val nullableString: String? = null
val result = nonNullString.let { it.length } // result will be 13
val nullableResult = nullableString?.let { it.length } // nullableResult will be null
fun String?.safeLength(): Int? {
return this?.length
}
val nonNullString: String = "Hello, World!"
val nullableString: String? = null
val result = nonNullString.safeLength() // result will be 13
val nullableResult = nullableString?.safeLength() // nullableResult will be null
总之,Kotlin 通过提供多种方法来处理空值,包括安全地访问属性或方法的操作符(?.
和 !!
)、检查非空值的 if
语句、let
函数以及扩展属性。这些方法可以帮助你编写更安全、更健壮的代码。