web-dev-qa-db-ja.com

JavaでScalaシングルトンオブジェクトを使用するにはどうすればよいですか?

Scalaクラスで使用する必要があるJavaオブジェクトがあります。

Scalaオブジェクト

_object Person {
  val MALE = "m"
  val FEMALE = "f"
}
_

JavaでこのScalaオブジェクトを使用するにはどうすればよいですか?

私はこれまでに成功せずに次のことを試しました(コンパイルエラー)。

  • Person.MALE() //実際のPersonオブジェクトが欲しいので役に立たない文字列を返します
35
user786045

使用する Person$.MODULE$。こちらもご覧ください


Edit:実用的な例(私は確認しましたが、コンパイルして動作します):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());
    }
}
52
Petr Pudlák

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);
}
1
SerCe