scala-scala的特质(trait),java怎么实现

scala-scala的特质(trait),java怎么实现

清晨说ぺ晚安 发布于 2017-08-10 字数 240 浏览 1230 回复 2

我们知道scala也在jvm中运行,也编译成class,对于其他特性(比如函数式、val关键字、操作符重载等),我都能想明白这是怎么通过java实现的。
唯独trait无法想明白,这么一个类似多继承的东西,怎么能编译成java的class并在jvm中运行的呢????

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

灵芸 2017-10-03 2 楼

委托?实际运行的时候自动加了方法?
反编译看看吧

瑾兮 2017-10-02 1 楼

没有具体实现的trait会直接被翻译成接口(Interface)
有方法具体实现的trait会如1.生成的接口之外,还会生成叫做”伴生类“的类(Class),此中实现trait中指定的实现。
trait中的成员变量在生成的接口中转化成同名方法声明,由伴生类完成初始化。
生成的伴生类和生成的接口以及原本trait的超类都没没有继承关系。”该超类会被任何实现该trait的类继承“。