简体   繁体   English

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

[英]How can I use a Scala singleton object in Java?

I have a Scala object that I need to use in a Java class. 我有一个Scala对象,我需要在Java类中使用。

Here's the Scala object 这是Scala对象

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

How can I use this Scala object in Java? 如何在Java中使用此Scala对象?

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 Person.MALE() //返回一个没用的String,因为我想要实际的Person对象

Use Person$.MODULE$ . 使用Person$.MODULE$ See also 也可以看看


Edit : A working example (I checked, it compiles and works): Scala: 编辑 :一个工作示例(我检查,它编译和工作):Scala:

object Person {
  val MALE = "m";
}

Java counterpart: Java对应物:

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

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

In case you use a package object , the access is a bit different 如果您使用package object ,访问会有所不同

Scala: 斯卡拉:

package my.scala.package

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

Java counterpart: Java对应物:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM