kotlin在null上的非效果



kotlin具有非无效断言,我发现了一些有趣的东西...

val myvar: String = null!!

它将崩溃。

但要点是,它不会在编译时间检查。

该应用将在运行时崩溃。

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

!!在运行时评估,它只是一个操作员。

表达式 (x!!)

  • 如果x == null
  • ,将 KotlinNullPointerException投掷
  • 否则,它将返回x铸造为相应的不可拆卸类型(例如,当在带有String?类型的变量上调用时,它将其返回为String(。

当然,这是throw KotlinNullPointerException()null!!速记。


如果有帮助,您可以将!!视为执行与这样的函数相同的事情:

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()相同的结果。

相关内容

  • 没有找到相关文章

最新更新