Подтвердить что ты не робот

Как использовать объект Scala singleton в Java?

У меня есть объект Scala, который мне нужно использовать в классе Java.

Здесь Scala object

object Person {
  val MALE = "m"
  val FEMALE = "f"
}

Как я могу использовать этот объект Scala в Java?

Я пробовал следующее без успеха (компилировать ошибки):

  • Person.MALE()//возвращает строку, которая бесполезна, поскольку я хочу, чтобы фактический объект Person
4b9b3361

Ответ 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);
}