假设我有 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