Как использовать объект Scala singleton в Java?
У меня есть объект Scala, который мне нужно использовать в классе Java.
Здесь Scala object
object Person {
val MALE = "m"
val FEMALE = "f"
}
Как я могу использовать этот объект Scala в Java?
Я пробовал следующее без успеха (компилировать ошибки):
-
Person.MALE()
//возвращает строку, которая бесполезна, поскольку я хочу, чтобы фактический объект Person
Ответы
Ответ 1
Используйте Person$.MODULE$
. См. Также
Изменить: рабочий пример (я проверил, он компилируется и работает):
Scala:
object Person {
val MALE = "m";
}
Java-копия:
public class Test {
Person$ myvar = Person$.MODULE$;
public static void main(String argv[]) {
System.out.println(new Test().myvar.MALE());
}
}
Ответ 2
Если вы используете package object
, доступ немного отличается
Scala:
package my.scala.package
package object Person {
val MALE = "m";
}
Java-копия:
public static void main() {
System.out.println(my.scala.package.Person.package$.MODULE$.MALE);
}