2012-09-05 33 views
25

Tôi có một đối tượng Scala mà tôi cần sử dụng trong một lớp Java.Làm cách nào tôi có thể sử dụng đối tượng singleton Scala trong Java?

Dưới đây là các đối tượng Scala

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

Làm thế nào tôi có thể sử dụng đối tượng này Scala trong Java?

Tôi đã thử những điều sau đây cho đến nay nhưng không thành công (biên dịch lỗi):

  • Person.MALE() // trả về một String đó là vô dụng như tôi muốn đối tượng Person thực tế
+2

thể trùng lặp của [Làm thế nào có thể Tôi vượt qua một tham chiếu đối tượng Scala trong Java?] (Http://stackoverflow.com/questions/3845737/how-can-i-pass-a-scala-object-reference -around-in-java) –

Trả lời

35

Sử dụng Person$.MODULE$. Xem thêm


Sửa: Một ví dụ làm việc (tôi đã kiểm tra, nó biên dịch và các công trình): Scala:

object Person { 
    val MALE = "m"; 
} 

Java đảo ngược nghệ thuật:

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

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

Điều này cũng không thực sự hiệu quả. Eclipse cho tôi biết: ** Người $ không thể được giải quyết thành biến 'mã ** và mã không biên dịch – user786045

+2

@ user786045, bạn cần thêm tuyên bố nhập cho Person $ theo cách thủ công. Eclipse không tự động thêm nó vào "tổ chức nhập khẩu". –

0

Trong trường hợp bạn sử dụng một package object, việc tiếp cận là một chút khác nhau

Scala:

package my.scala.package 

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

Java đối tác:

public static void main() { 
    System.out.println(my.scala.package.Person.package$.MODULE$.MALE); 
} 
Các vấn đề liên quan