当我跑步时null.asInstanceOf[Int],我很惊讶地发现结果为0,我会问为什么它为0,我认为它应该为空
我以为它应该是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]返回type的默认值T.
有趣的是,它过去被定义为抛出NullPointerException,但实际上是以当前的方式实现的,因此规范发生了变化:https://issues.scala-lang.org/browse/SI-5236