40-强校验操作符
4.10.4 强校验操作符
在Kotlin的空安全机制中,为了避免NullPointerException,必须对处理的对象进行强校验。
var a="hello"
val lenC = a!!.length
println(lenC)
另外,如果对象不是目标类型,则使用常规类型转换可能会导致 ClassCastException异常。代码如下。
var a: Long = 1
val aInt: Int? = a as Int // java.lang.ClassCastException
对于上面的问题,可以选择使用安全的类型转换方式。如果转换不成功,则返回null,而不是抛出ClassCastException异常。代码如下。
var a: Long = 1
val aInt: Int? = a as? Int
println(aInt) //输出null
有一个可空类型元素的集合,如果想要对它的非空元素进行过滤,则可以使用filterNotNull方法来实现。
val nullableList: List<Int?> = listOf(1, 2, null, 4)
val intList: List<Int> = nullableList.filterNotNull()
println(intList) //输出[1, 2, 4]