结果null.asInstanceOf [Int]为0

时间:2017-08-09 10:01:02

标签: scala

当我运行null.asInstanceOf[Int]时,我很惊讶地发现结果为0,我会问为什么它为0,我认为它应该为空

1 个答案:

答案 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] [on null]会返回T类型的默认值。

  

有趣的是,它过去被定义为抛出NullPointerException,但实际上是以当前的方式实现的,因此规范发生了变化:https://issues.scala-lang.org/browse/SI-5236