2012-09-05 25 views
25

我有一個需要在Java類中使用的Scala對象。如何在Java中使用Scala單例對象?

這裏是斯卡拉對象

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

如何使用Java中此斯卡拉對象?

我曾嘗試以下至今沒有成功(編譯錯誤):

  • Person.MALE() //返回一個字符串,因爲我想實際Person對象
+2

可能重複[如何選擇我在Java中傳遞一個Scala對象引用?](http://stackoverflow.com/questions/3845737/how-can-i-pass-a-scala-object-reference -around-in-java) –

回答

35

使用Person$.MODULE$這是無用的。另請參見


編輯:一個工作示例(我查了一下,它編譯和作品): 斯卡拉:

object Person { 
    val MALE = "m"; 
} 

的Java counterp藝術:

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

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

這也不是真的有效。 Eclipse告訴我: ** Person $無法解析爲變量'code ** 並且代碼不能編譯 – user786045

+2

@ user786045,您需要手動爲Person $添加一個導入語句。 Eclipse不會在「組織導入」中自動添加它。 –

0

如果你使用package object,訪問不同的是有點

斯卡拉:

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); 
} 
相關問題