kotlin - 强制转换和安全强制转换运算符与 null 有什么区别

标签 kotlin

假设我有 2 个表达式:

val x: Int? = null as Int?

val x: Int? = null as? Int?

它们之间有什么不同?

为什么第一个是不安全的 Actor ?

最佳答案

实际上,当转换失败时,不安全转换会引发异常,而当转换操作失败时,安全转换会转换为 null

val x1: Int? = 1.0 as? Int?
println(x1)

打印:

null

这里的代码:

val x: Int? = 1.0 as Int?

抛出异常:

Exception in thread "main" java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Integer

关于kotlin - 强制转换和安全强制转换运算符与 null 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51101016/

相关文章:

kotlin - 如何隐藏某些片段中的底部导航栏?

java - 运行用 Kotlin 编写的 Apache Tomcat servlet 时出错

android - 在 Kotlin 中,如何使属性只能由特定类型访问

android - 使用 mockk 匹配任何可变参数

kotlin - Arrow-Kt Fx 与 Kotlin 协程

kotlin - 当我使用多个流时,Kafka Streams StreamsException

android - 每当创建 Exception 实例时,suspendCoroutine 都会使应用程序崩溃

kotlin - 是否可以在 Kotlin 中轻松构建 DSL?

android - 如何将 Firebase dataSnapshot 对象和 key 保存到 Kotlin DTO 数据类中?

kotlin - Spring WebClient 阻塞线程