2013-02-21 31 views
5

Tôi đang cố liệt kê tất cả các lớp từ một gói và trích xuất một số thông tin siêu dữ liệu qua api phản chiếu mới (2.10).Chuyển đổi Class [_] thành vũ trụ.Type/Symbol

Tôi có thể sai, nhưng có vẻ như không có sự hỗ trợ để liệt kê các lớp học từ gói trên scala api.

Tôi đang sử dụng một java library, nhưng nó chỉ trả về Class<?>

Có thể chuyển đổi một Class[_]-universe.Type hoặc universe.Symbol?

Trả lời

10

Bạn shoud sử dụng gương của scala.reflect.runtime.universe (JavaUniverse)

Giả sử bạn có một lớp runtime:

val cls: Class[_] = someObject.getClass 

Bạn sẽ nhận được runtimeMmirror (JavaMirror) cho classloader của bạn và gọi phương thức classSymbol của nó, chuyển đổi thời gian chạy class to ClassSymbol cho vũ trụ này:

import scala.reflect.runtime._ 

val typ: universe.ClassSymbol = universe.runtimeMirror(cls.getClassLoader).classSymbol(cls) 
Các vấn đề liên quan