Scala for the Impatient中的上图显示了所有Java类都是AnyRef类的子类.
figure 8–1 shows the inheritance hierarchy of Scala classes. The classes that correspond to the primitive types in Java,as well as the type
Unit
,extendAnyVal
. All other classes are subclasses of theAnyRef
class,which is a synonym for theObject
class from the Java or .NET virtual machine.
BothAnyVal
andAnyRef
extend theAny
class,the root of the hierarchy.
如何在不改变java类的情况下实现这一目标?它是在字节码级别处理的吗?
解决方法
我的解释是那句话
All other classes are subclasses of the AnyRef class,which is a
synonym for the Object class from the Java or .NET virtual machine.
(强调我的)完美地解释了它.
对于JVM,没有AnyRef类.该文本将AnyRef称为同义词,而JVM没有这样的概念.因此,Scala编译器可能会用java.lang.Object替换AnyRef的出现.当然,所有java类都是java.lang.Object的子类,它只是在Scala编译器中得到一个新名称,因此它们都是从AnyRef继承的(a.k.a.Object)
我打赌你不会在任何Scala运行时JAR库中找到AnyRef.class条目,这意味着对于JVM,类似AnyRef的类不存在.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。