当我运行null.asInstanceOf[Int]
时,我很惊讶地发现结果为0,我会问为什么它为0,我认为它应该为空
答案 0 :(得分:5)
我认为它应该为null
不能null
,因为Int
没有null
值。如果你尝试null: Int
(类型归属而不是强制转换),你可以看到它,虽然错误信息是丑陋的。
为什么它是0
因为它是以http://scala-lang.org/files/archive/spec/2.12/06-expressions.html#the-null-value:
的方式定义的
asInstanceOf[T]
[onnull
]会返回T
类型的默认值。
有趣的是,它过去被定义为抛出NullPointerException
,但实际上是以当前的方式实现的,因此规范发生了变化:https://issues.scala-lang.org/browse/SI-5236