Scala object MODULE $

What is the purpose of the Scala object MODULE $ ?

The following Scala object:

object TestScalaObject {
 val TEST_SYMBOL = "*"
 def testMethod(x : String) : String = x
}

compiled into two bytecode files TestScalaObject.class and TestScalaObject $ .class , which, if I figured out to get the equivalent Java code, I get:

TestScalaObject.class:

public final class TestScalaObject extends java.lang.Object{
    public static final java.lang.String testMethod(java.lang.String);
    public static final java.lang.String TEST_SYMBOL();
}

TestScalaObject $ .class:

public final class TestScalaObject$ extends java.lang.Object implements scala.ScalaObject{
    public static final TestScalaObject$ MODULE$;
    public static {};
    public java.lang.String TEST_SYMBOL();
    public java.lang.String testMethod(java.lang.String);
}

I can see public static finalTestScalaObject $ .MODULE $, but what is it used for if I can access everything I need through TestScalaObject.TEST_SYMBOL and TestScalaObject.testMethod () if I ever wanted to do this with Java

+5
source share
1 answer

MODULE$ . . Singleton Java. , , Wikipedia Singleton.

+7

All Articles