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

WP主题Bug提交 WP主题Bug提交 主题:1067 回复:2226

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

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

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

发布评论

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

支持 Markdown 语法,需要帮助?

评论(2

灵芸 2017-10-03 2 楼

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

瑾兮 2017-10-02 1 楼

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