我刚刚读过这个问题 https://stackoverflow.com/questions/9853645/并偶然发现了以下引用:
斯卡拉款待==
就好像它在类中定义如下Any
:
final def == (that: Any): Boolean =
if (null eq this) (null eq that) else (this equals that)
The (null eq this)
这一部分让我想知道:真的可以在空指针上调用方法吗?能this
be null
在斯卡拉?
查看Scala 语言规范 http://www.scala-lang.org/docu/files/ScalaReference.pdf,即6.3 空值章节:
null 值的类型scala.Null
,因此与每个参考兼容
类型。它表示一个参考值,指的是特殊的“null”目的。这个物体
实现类中的方法scala.AnyRef
如下:
• eq(x)
and ==(x)
如果参数返回 truex
也是“空”对象。
• ne(x)
and !=(x)
如果参数返回 truex
也不是“空”对象。
这意味着从语义上来说,当你将某物与null
字面意思或null
文字与您实际上指的是特殊方法的东西scala.Null http://www.scala-lang.org/api/current/scala/Null.html班级。对待null
文字作为该类的简写。
当然在实现层面它是优化的ordinary null
用来。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)