我刚看了这个问题,偶然发现了以下引用:
Scala将
==其视为在类中定义如下Any:Run Code Online (Sandbox Code Playgroud)final def == (that: Any): Boolean = if (null eq this) (null eq that) else (this equals that)
这(null eq this)部分让我想知道:实际上是否可以在空指针上调用方法?可以this是null在Scala呢?
查看Scala语言规范,即6.3 The Null Value章节:
null值是类型
scala.Null,因此与每个引用类型兼容.它表示引用特殊"空"对象的引用值.该对象在类scala.AnyRef中实现如下方法:• 如果参数也是"null"对象
eq(x),则==(x)返回truex.• 如果参数不是"null"对象
ne(x),则!=(x)返回truex.
这意味着,当您将null文字或null文字的内容与实际引用特殊scala.Null类的方法的内容进行比较时,语义上.将null文字视为该类的简写.
当然,在实现级别,它是优化的并且使用普通 null的.
| 归档时间: |
|
| 查看次数: |
635 次 |
| 最近记录: |