2012-09-05 10 views
25

Ho un oggetto Scala che devo usare in una classe Java.Come posso usare un oggetto Singleton Scala in Java?

Ecco l'oggetto Scala

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

Come posso utilizzare questo oggetto Scala in Java?

Ho provato quanto segue finora senza successo (errori di compilazione):

  • Person.MALE() // restituisce una stringa che è inutile come voglio l'oggetto persona reale
+2

possibile duplicato di [Come può Ho passato un riferimento a oggetti Scala in Java?] (Http://stackoverflow.com/questions/3845737/how-can-i-pass-a-scala-object-reference -around-in-java) –

risposta

35

Usa Person$.MODULE$. Vedi anche


Edit: un esempio di lavoro (ho controllato, si compila e opere): Scala:

object Person { 
    val MALE = "m"; 
} 

Java counterp arte:

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

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

Anche questo non funziona. Eclipse mi dice: ** Person $ non può essere risolto in un codice di variabile ** e il codice non compila – user786045

+2

@ user786045, è necessario aggiungere manualmente una dichiarazione di importazione per Persona $. Eclipse non lo aggiunge automaticamente su "organizza le importazioni". –

0

Nel caso in cui si utilizza un package object, l'accesso è un po 'diverso

Scala:

package my.scala.package 

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

Java controparte:

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