让我们说我有2个表达式:
val x: Int? = null as Int?
和
val x: Int? = null as? Int?
它们之间有什么区别?
为什么第一个是不安全的演员?
答案 0 :(得分:3)
实际上,当强制转换失败时,不安全的强制转换会引发异常,而当强制转换操作失败时,安全的强制转换将转换为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