您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页空安全

空安全

来源:二三娱乐

与Java任何引用都可以为null不同,Kotlin是空安全的,Kotlin中若产生空指针异常只会由下面几点造成

  • 显示调用throw NullPointerExecption()
  • 使用了!!操作符
  • 数据没有初始化
  • 与Java互操作时调用了Java代码中有关null的代码

Kotlin中有关空安全的操作符

安全调用操作符"?"

表示可以为空,可以与let一起使用,表示只对非空值操作

fun main() {
    val list = listOf("zzx", "jane", null, "tracy")
    for (item in list) {
        item?.let { print("$it ") }
    }
}
======结果======
zzx jane tracy 

安全调用也可以出现在赋值操作的左侧,如果有任何一个接收者为空则会跳过赋值操作,右侧的表达式直接不执行

// 如果 `person` 或者 `person.department` 其中之一为空,都不会调用该函数:
person?.department?.head = managersPool.getManager()

Elvis操作符"?:"

下面代码表示如果b不为空就将b.length的值赋值给l,为空则将?:右边的-1赋值给l

val l = b?.length ?: -1

?: 右边也可以根return和throw

 val parent = node.getParent() ?: return null
 val name = node.getName() ?: throw IllegalArgumentException("name expected")

非空断言操作符"!!"

如果b为空会抛出空指针异常

val l=b!!.length

安全的类型转换

如果b转换为Int不成功则返回null

val a:Int?=b as? Int

filterNotNull过滤非空元素

fun main() {
    val list = listOf("zzx", "jane", null, "tracy")
    for (item in list.filterNotNull()) {
        print("$item ")
    }
}
======结果======
zzx jane tracy 

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

热门图文

Copyright © 2019-2025 yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务