37

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

这是 Scala 对象

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

如何在 Java 中使用这个 Scala 对象?

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

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

2 回答 2

56

使用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());
    }
}
于 2012-09-05T14:50:03.353 回答
1

如果您使用 a package object,访问权限会有所不同

斯卡拉:

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);
}
于 2017-04-19T05:27:18.553 回答