![](/img/trans.png)
[英]Looking for explanation with a Kotlin non-null assertion error in Android app?
[英]Kotlin non-null assertion on null
由于Kotlin有非空的断言,我发现了一些有趣的东西......
val myvar: String = null!!
它会崩溃。
但重点是,它不会在编译时检查。
该应用程序将在运行时崩溃。
它不应该抛出编译时错误吗?
!!
在运行时进行评估,它只是一个运算符。
表达式(x!!)
x == null
,则抛出KotlinNullPointerException
, x
铸造成相应的非空类型(例如,它返回它作为一个String
称为上与类型的变量时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()
相同的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.