2012-09-05 28 views
25

Tengo un objeto Scala que necesito usar en una clase Java.¿Cómo puedo usar un objeto Singleton de Scala en Java?

Aquí está el objeto Scala

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

¿Cómo puedo utilizar este objeto Scala de Java?

He intentado lo siguiente hasta ahora sin éxito (errores de compilación):

  • Person.MALE() // devuelve una cadena que es inútil como quiero que la persona objeto real
+2

posible duplicado de [¿Cómo puede Paso una referencia de objeto Scala en Java?] (Http://stackoverflow.com/questions/3845737/how-can-i-pass-a-scala-object-reference -around-in-java) –

Respuesta

35

Uso Person$.MODULE$. Ver también


Editar: Un ejemplo de trabajo (lo comprobé, que compila y obras): Scala:

object Person { 
    val MALE = "m"; 
} 

Java contrap arte:

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

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

Esto tampoco funciona. Eclipse me dice: ** La persona $ no se puede resolver con un código variable y el código no compila – user786045

+2

@ user786045, necesita agregar manualmente una declaración de importación para Person $. Eclipse no lo agrega automáticamente en "organizar importaciones". –

0

En caso de que utilice un package object, el acceso es un poco diferente

Scala:

package my.scala.package 

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

Java contraparte:

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