如果Scala的==调用等于,为什么不抛出异常?

时间:2015-11-09 15:13:12

标签: scala

scala> val x:String = null
x: String = null

scala> x == "Hey"
res0: Boolean = false

这应该转换为x.equals(“嘿”)?

1 个答案:

答案 0 :(得分:3)

根据SLS:

  

6.3空值

     

null值的类型为scala.Null,因此与每个引用类型兼容。它表示引用特殊“空”对象的引用值。该对象实现了类scala.AnyRef中的方法,如下所示:

     

•如果参数x也是“null”对象,则eq(x)和==(x)返回true。

     

•ne(x)和!=(x)如果参数x不是“null”对象,则返回true。

     

•isInstanceOf [T]始终返回false。

     

•asInstanceOf [T]返回T类型的默认值(参见§4.2)。

     

•##返回“0”。对“null”对象的任何其他成员的引用会导致抛出NullPointerException。