【摘要】:首先在Java JVM中验证一下trait的实现。在Scala中需要将特质trait翻译成为JVM的类和接口,在DOS提示符中进入UseTrait.Scala目录,执行编译Scalac UseTrait.Scala;然后进入UseTrait的字节码文件的目录,使用Java-private Logger查看。按F3键看一下特质App的源代码,原来UseTrait继承了特质App,而在特质App中定义了main的入口函数。
首先在Java JVM中验证一下trait的实现。在Scala中需要将特质trait翻译成为JVM的类和接口,在DOS提示符中进入UseTrait.Scala目录,执行编译Scalac UseTrait.Scala;然后进入UseTrait的字节码文件的目录,使用Java-private Logger查看。
(1)Logger特质trait
定义一个特质Logger:
在JVM中traitLogger被翻译成了Java的接口,如下所示:
(2)class ConcreteLogger类
定义一个类ConcreteLogger,继承特质Logger及Cloneable:
Trait特质的继承在JVM中被翻译成Java接口的implements实现,如下所示:
(3)TraitLogger特质(www.daowen.com)
定义特质TraitLogger,继承特质Logger:
特质TraitLogger在JVM中被翻译成为interface接口,如下所示:
(4)UseTrait对象
定义UseTrait对象,继续特质App:
在object UseTrait extends App{}对象体中没有定义main的入口函数(def main(args:Array[String]){}),那么编译器是如何找到入口运行的呢?按F3键看一下特质App的源代码,原来UseTrait继承了特质App,而在特质App中定义了main的入口函数。
特质App的部分源代码如下:
还可以在Java JVM中验证一下是否有main入口函数生成,如下所示为UseTrait在JVM中确实翻译生成了main入口函数:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
有关Scala语言基础与开发实战的文章