我正在阅读" Scala编程"本书提到==
在final
类中是Any
,这意味着子类无法覆盖它,所以当我看到这个示例List(1,2) == List(1,2)
时,我去找了API doc,我无法找到方法==
,Scala如何在List
中实际定义该方法?为什么它不在API文档中?
如果List
类没有覆盖它,那么比较如何基于List
项而不是对象引用?
答案 0 :(得分:2)
==
是课程Any
中的最终方法,它会调用.equals
。
问:Scala如何在List中定义该方法?
答:Scala执行环境中的每个类都直接或继承 间接来自
Any
类。
Scala中的引用相等性为eq
。
答案 1 :(得分:1)
==在类Any 中是最终的,而Any
是 scala 类层次结构中的根。 scala 中的每个类都会从Any
默认延伸。因此,当在 scala 中调用==
时,它将首先调用任何 ==
方法。以及Any
==
定义:
if(x eq null)eq null else x.equals(that)
请参阅:Any Class