5
Scalaオブジェクトの目的は何ですかMODULE $?
次のScalaオブジェクト::
object TestScalaObject {
val TEST_SYMBOL = "*"
def testMethod(x : String) : String = x
}
私は同等のJavaコードを取得するために分解した場合、私は取得2つのバイトコードファイルTestScalaObject.classとTestScalaObject $ .classファイルにコンパイル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