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



假设我有 2 个表达式:

val x: Int? = null as Int?

val x: Int? = null as? Int?

它们之间有什么区别?

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

实际上,当强制转换失败时,不安全强制转换会引发异常,而当强制转换操作失败时,安全强制转换会转换为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

最新更新