微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Scala中创建AnyRef的现有Java类子类?

Scala继承层次结构图:

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,extend AnyVal. All other classes are subclasses of the AnyRef class,which is a synonym for the Object class from the Java or .NET virtual machine.
Both AnyVal and AnyRef extend the Any class,the root of the hierarchy.

如何在不改变java类的情况下实现这一目标?它是在字节码级别处理的吗?

解决方法

免责声明:我绝不是Scala专家,但拥有20年的Java经验,包括JVM.

我的解释是那句话

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 举报,一经查实,本站将立刻删除。

相关推荐