wake-up-neo.com

Wie kann ich ein Scala Singleton-Objekt in Java verwenden?

Ich habe ein Scala-Objekt, das ich in einer Java-Klasse verwenden muss.

Hier ist das Scala-Objekt

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

Wie kann ich dieses Scala-Objekt in Java verwenden?

Ich habe bisher erfolglos folgendes ausprobiert (Kompilierfehler):

  • Person.MALE() // gibt einen unbrauchbaren String zurück, da ich das eigentliche Person-Objekt haben möchte
30
user786045

Verwenden Sie Person$.MODULE$. Siehe auch


Edit : Ein Arbeitsbeispiel (ich habe es überprüft, kompiliert und funktioniert): Scala:

object Person {
  val MALE = "m";
}

Java-Gegenstück:

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

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

Falls Sie einen package object verwenden, ist der Zugriff etwas anders

Scala:

package my.scala.package

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

Java-Gegenstück:

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