Scala的类层次结构
关于
Scala类层次结构的问题:
>在IntelliJ IDE中,我正在寻找Any和AnyRef的实现,但它们并不存在.
嗯……但不是==最终?他们是如何为Java的数字类做出特殊情况的? 解决方法
Any,AnyRef,Null,Nothing实际上并不存在;包含它们是为了使类型系统完整,但它们没有真正的表示.您可以找到
a reference in Scala’s repository,但正如它所说,这些实际上并不是为了文档和引导目的而编译和存在. Scala的3 Any * s实际上是编译后的字节码中的所有java.lang.Object.
另外,原始值类(Int,Long等)都是定义的最终抽象,这意味着它们实际上也不存在.他们所有的方法都是抽象的. 为了使一切看起来干净整洁,更重要的是工作,编译器的工作就是伪造这些类型的存在并执行魔术以使它们全部结合在一起.这是允许==进行空值检查并正确处理值类型的原因,即使它是最终的,因为编译器正在围绕它进行魔术.在新的java.lang.Integer(5)== new java.lang.Long(5)的情况下,它归结为scala.runtime.BoxesRuntime.equalsNumNum(new java.lang.Integer(5),new java. lang.Long(5)). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |