如何在Java中使用Scala单例对象?

时间:2012-09-05 14:43:18

标签: java scala scala-java-interop

我有一个需要在Java类中使用的Scala对象。

这是Scala对象

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

如何在Java中使用此Scala对象?

到目前为止,我已经尝试了以下但没有成功(编译错误):

  • Person.MALE() //返回一个没用的字符串,因为我想要实际的Person对象

2 个答案:

答案 0 :(得分:49)

使用Person$.MODULE$。另见


编辑:一个工作示例(我检查过,它编译并运行): 阶:

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());
    }
}

答案 1 :(得分:0)

如果您使用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);
}