How can I use a Scala singleton object in Java?

旧街凉风 提交于 2019-11-26 11:28:34

问题


I have a Scala object that I need to use in a Java class.

Here\'s the Scala object

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

How can I use this Scala object in Java?

I have tried the following so far without success (compile errors):

  • Person.MALE() //returns a String which is useless as I want the actual Person object

回答1:


Use Person$.MODULE$. See also

  • How can I pass a Scala object reference around in Java?
  • Singletons as Synthetic classes in Scala?

Edit: A working example (I checked, it compiles and works): Scala:

object Person {
  val MALE = "m";
}

Java counterpart:

public class Test {
    Person$ myvar = Person$.MODULE$;

    public static void main(String argv[]) {
        System.out.println(new Test().myvar.MALE());
    }
}



回答2:


In case you use a package object, the access is a bit different

Scala:

package my.scala.package

package object Person {
  val MALE = "m";
}

Java counterpart:

public static void main() {
  System.out.println(my.scala.package.Person.package$.MODULE$.MALE);
}


来源:https://stackoverflow.com/questions/12284028/how-can-i-use-a-scala-singleton-object-in-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!