【问题标题】:Why there are two class files generated after compiling scala code?为什么编译scala代码后会生成两个类文件?
【发布时间】:2015-08-24 05:36:59
【问题描述】:

当我们使用编译scala代码时

scalac code.scala

创建了两个名为 code.classcode$.class 的文件。 第二个文件的目的是什么?

供参考,

object HelloWorld {
    def main (args: Array[String]) {
        println ("Hello world! This is my first scala program!");
    }
}

这是code.scala文件中的代码。

【问题讨论】:

  • 你的源文件code.scala有什么?
  • 只有一个名为 Code 的对象,其主体中有一个 main def。

标签: scala


【解决方案1】:

这是 Scala 如何将 Scala object 转换为 JVM 结构的结果。一个object X 被翻译成一个类X$ 具有普通的方法、普通的继承等。

object X 在 Scala 中创建单例,如果能够从 Java 访问它的公共方法,通过调用它们作为静态方法 X.someMethod() 会很好。这就是为什么 Scala 编译器还创建了一个类X,其中的静态方法调用类X$ 的单例实例的普通方法。即使您本身没有 Scala 类 X

【讨论】:

    【解决方案2】:

    第二个文件是伴生对象,如果你有两个

    class Code{}
    object Code{}
    

    在你的文件中

    【讨论】:

    • 但我的文件中没有课程。我只有一个对象。
    猜你喜欢
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    • 2019-11-02
    • 2013-03-26
    • 2012-01-03
    • 2015-07-03
    • 1970-01-01
    相关资源
    最近更新 更多