在Scala中这可以为null吗?

fre*_*low 7 null scala this

我刚看了这个问题,偶然发现了以下引用:

Scala将==其视为在类中定义如下Any:

final def == (that: Any): Boolean = 
  if (null eq this) (null eq that) else (this equals that)
Run Code Online (Sandbox Code Playgroud)

(null eq this)部分让我想知道:实际上是否可以在空指针上调用方法?可以thisnull在Scala呢?

Tom*_*icz 8

查看Scala语言规范,即6.3 The Null Value章节:

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

• 如果参数也是"null"对象eq(x),则==(x)返回true x.

• 如果参数不是"null"对象ne(x),则!=(x)返回true x.

这意味着,当您将null文字或null文字的内容与实际引用特殊scala.Null类的方法的内容进行比较时,语义上.将null文字视为该类的简写.

当然,在实现级别,它是优化的并且使用普通 null的.