gpt4 book ai didi

android - Kotlin 对 null 的非 null 断言

转载 作者:IT老高 更新时间:2023-10-28 13:47:14 24 4
gpt4 key购买 nike

由于 Kotlin 有非空断言,我发现了一些有趣的东西......

val myvar: String = null!!

它会崩溃。

但关键是,它不会在编译时检查。

应用程序将在运行时崩溃。

不应该抛出编译时错误吗?

最佳答案

!! 在运行时评估,它只是一个运算符。

表达式(x!!)

  • 如果 x == null,则抛出 KotlinNullPointerException
  • 否则,它会将 x 转换为相应的不可为空的类型(例如,当在类型为 的变量上调用时,它会以 String 的形式返回它字符串?)。

当然,这使得 null!! 成为 throw KotlinNullPointerException() 的简写。


如果有帮助,您可以将 !! 视为与以下函数相同:

fun <T> T?.toNonNullable() : T {
if(this == null) {
throw KotlinNullPointerException()
}
return this as T // this would actually get smart cast, but this
// explicit cast demonstrates the point better
}

这样做 x!! 会得到与 x.toNonNullable() 相同的结果。

关于android - Kotlin 对 null 的非 null 断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44784720/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com