Scala对象MODULE $的目的是什么?
以下Scala对象:
object TestScalaObject {
val TEST_SYMBOL = "*"
def testMethod(x : String) : String = x
}
Run Code Online (Sandbox Code Playgroud)
编译成两个字节码文件TestScalaObject.class和TestScalaObject $ .class,如果我反汇编以获得我得到的等效Java代码:
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();
}
Run Code Online (Sandbox Code Playgroud)
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);
}
Run Code Online (Sandbox Code Playgroud)
我可以看到一个public static finalTestScalaObject $ .MODULE $但如果我可以通过TestScalaObject.TEST_SYMBOL和TestScalaObject.testMethod()访问我需要的所有内容,如果我想从Java那里做到这一点