scala – AnyRef.eq方法的默认实现
发布时间:2020-12-16 10:05:15 所属栏目:安全 来源:网络整理
导读:我是 Scala的新手,并探索 Scala源代码以获得具体的理解.当我引用scala.AnyRef类来理解eq方法的实现时,我可以看到下面的定义并且令人困惑: final def eq(that: AnyRef): Boolean = sys.error("eq") 由于此方法抛出错误:检查两个对象是否相同,逻辑eq如何以及
我是
Scala的新手,并探索
Scala源代码以获得具体的理解.当我引用scala.AnyRef类来理解eq方法的实现时,我可以看到下面的定义并且令人困惑:
final def eq(that: AnyRef): Boolean = sys.error("eq") 由于此方法抛出错误:检查两个对象是否相同,逻辑eq如何以及如何?我们在哪里可以看到实施? 同样的问题适用于hashCode()方法. 为什么Any.scala和AnyRef.scala不属于Scala包?我只能看到AnyValues.scala. 解决方法
这种实现并没有真正使用;这是一个存根.编译器通过自己的逻辑替换对此方法的调用.因此,实际的实现深埋在编译器中.
由于同样的原因,Any.scala和AnyRef.scala没有物理存在.它们由编译器神奇地实现. 通常,您无法从原始类型的源代码中获得太多知识(其他示例:Int,Nothing等). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |