web-dev-qa-db-fra.com

Comment utiliser un objet singala Scala en Java?

J'ai un objet Scala que je dois utiliser dans une classe Java.

Voici l'objet Scala

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

Comment utiliser cet objet Scala en Java?

J'ai essayé ce qui suit sans succès jusqu'à présent (erreurs de compilation):

  • Person.MALE() // retourne une chaîne qui est inutile car je veux l'objet réel de la personne
30
user786045

Utilisez Person$.MODULE$. Voir également


Edit : Un exemple de travail (j'ai vérifié, il compile et fonctionne): Scala:

object Person {
  val MALE = "m";
}

Contrepartie Java:

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

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

Si vous utilisez un package object, l'accès est un peu différent

Scala:

package my.scala.package

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

Contrepartie Java:

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