¿Cuál es el propósito del objeto Scala MÓDULO $?
El siguiente objeto Scala:
object TestScalaObject {
val TEST_SYMBOL = "*"
def testMethod(x : String) : String = x
}
compila en dos archivos de código de bytes TestScalaObject.class y TestScalaObject $ .class, que si yo desmonte para obtener el código equivalente Java me sale:
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);
}
puedo ver un public
static
final
TestScalaObject $ $ .module pero lo que es lo utiliza si puedo acceder a todo lo que necesito a través TestScalaObject.TEST_SYMBOL y TestScalaObject .testMethod() si alguna vez quise hacer eso desde Java
Consulte http://stackoverflow.com/questions/5721046/singletons-as-synthetic-classes-in-scala para obtener información relacionada. – huynhjl