美文网首页
Scala的trait

Scala的trait

作者: 真老根儿 | 来源:发表于2018-07-23 20:40 被阅读0次

今天看一下scala的trait,用法不讲,就看一下编译再反编译的源码
定义一个trait

trait TraitDemo {
  def say(): Unit
}

使用javac命令编译这个文件

scalac TraitDemo.scala

得到一个TraitDemo.clss,我们再使用javap命令反编译这个class文件看一下

# javap TraitDemo.class

Compiled from "TraitDemo.scala"
public interface com.study.TraitDemo {
  public abstract void say();
}

一目了然,trait类型经过编译后变成了接口,而say()被编译成为了abstract方法。
如果我们把def say(): Unit方法实现,改为say(): Unit = {},看反编译之后的代码

Compiled from "TraitDemo.scala"
public abstract class com.study.TraitDemo$class {
  public static void say(com.study.TraitDemo);
  public static void $init$(com.study.TraitDemo);
}

这时候trait就变成了一个抽象类,而实现的方法变成了static级别的。

看到上面的编译结果,我们就可以想到scala中,定义不同的trait,实现不同的功能,当我们需要某一个功能的时候可以直接with进来,比如成为便捷的工具类。

相关文章

  • trait in scala

    大多数情况下, Scala 中的 trait 相当于 Java 中的借口, 或者 Perl 6 中的 Role。S...

  • scala学习 - 特质

    本文来自《Programming in Scala》一书 Scala学习之特质(trait) 1 特质的定义 特质...

  • scala的Trait

    Trait基础 scala 中的Trait和Java中的接口(interface)极其类似 接口是彻底的抽象类,所...

  • Scala的trait

    今天看一下scala的trait,用法不讲,就看一下编译再反编译的源码定义一个trait 使用javac命令编译这...

  • Spark Sql 源码剖析(二): TreeNode

    零、前置知识 Scala Product trait 一、CurrentOrigin 使用 object Curr...

  • trait

    在scala中,trait相当于java中的interface关键字,可以用来定义接口,但是trait除了定义接口...

  • scala(十二) 特质

    特质的定义 Scala语言中,采用特质(trait)来代替接口的概念,也就是说,多个类具有相同的特质(trait)...

  • Scala特征(Trait)

    Scala Trait(特征) 相当于 Java 的接口,实际上它比接口还功能强大。与接口不同的是,它还可以定义属...

  • Scala详解——Trait

    学习过Java的同学肯定知道Java中有接口(interface)的概念,它在JAVA编程语言中是一个抽象类型,是...

  • 快速学习Scala之接口

    将Trait作为接口使用 Scala中的Triat是一种特殊的概念,可以将Trait作为接口来使用,此时的Tria...

网友评论

      本文标题:Scala的trait

      本文链接:https://www.haomeiwen.com/subject/lwqsmftx.html