2016-09-02 17 views
5

Tôi muốn nhận java.lang.Class cho Scala gói đối tượng:Scala đối tượng gói getClass

app/package.scala:

package object app { 
} 

app/Main.scala:

ứng dụng gói

object Main extends App { 
    val _ = app.getClass 
} 

Biên soạn không thành công với:

đối tượng getClass không phải là thành viên của ứng dụng gói Lưu ý rằng ứng dụng mở rộng Bất kỳ, không phải AnyRef. Các loại như vậy có thể tham gia vào các lớp giá trị, nhưng các trường hợp không thể xuất hiện trong các loại singleton hoặc trong tham chiếu so sánh.

Trả lời

2

Bạn có thể xác định phương pháp bên trong ứng dụng trở về lớp:

package object app { 
    def cls = getClass 
} 
2

Nhờ Nyavro cho câu trả lời.

Dường như đối tượng gói hạn chế quyền truy cập vào nó được xây dựng trong thành viên từ bên ngoài và để có được quyền truy cập đầy đủ để đóng gói đối tượng để đối tượng đơn giản chúng ta có thể làm như sau:

package object app { 
    val instance = this 
} 

và sử dụng nó như:

app.instance.getClass 
Các vấn đề liên quan