当前位置:嗨网首页>书籍在线阅读

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]