5
斯卡拉物件的用途是什麼MODULE $?
以下斯卡拉對象:
object TestScalaObject {
val TEST_SYMBOL = "*"
def testMethod(x : String) : String = x
}
編譯成兩個字節碼文件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();
}
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);
}
我可以看到一個public
static
final
TestScalaObject $ .MODULE $但它是什麼用,如果我可以通過TestScalaObject.TEST_SYMBOL和TestScalaObject訪問我需要的一切.testMethod()如果我曾經想要這樣做,從Java
有關相關信息,請參見http://stackoverflow.com/questions/5721046/singletons-as-synthetic-classes-in-scala。 – huynhjl