在Scala中将null转换为Int和Double

Mic*_*ael 8 null casting scala

可能重复:
如果Int不能为null,则null.asInstanceOf [Int]是什么意思?

我在REPL中尝试了以下内容:

scala> null.asInstanceOf[Int]
res12: Int = 0

scala> null.asInstanceOf[Float]
res13: Float = 0.0

scala> null.asInstanceOf[Double]
res14: Double = 0.0

在这种情况下,它会期望运行时异常(NPEClassCastException).
有人可以解释为什么 Scala会null归零吗?

Nic*_*las 6

这真的很奇怪,因为它不是根据规范预期的行为:

asInstanceOf[T]null如果T符合 scala.AnyRef,则返回对象本身,NullPointerException否则返回.

- Scala语言规范,版本2.9,p.75.

这是一个已知的错误,已关闭但与相关,它是开放的.