我正在尝试列出包中的所有类,并通过新的反射api(2.10)提取一些元数据信息。
我可能错了,但似乎没有支持从scala api上的包列出类。
我正在使用java library,但它只返回Class<?>
可以将Class[_]
转换为universe.Type
或universe.Symbol
吗?
答案 0 :(得分:11)
你应该使用scala.reflect.runtime.universe
(JavaUniverse)
假设您有一个运行时类:
val cls: Class[_] = someObject.getClass
您应该为您的类加载器获取runtimeMmirror
(JavaMirror)并调用其classSymbol
方法,该方法将运行时类转换为此Universe的ClassSymbol:
import scala.reflect.runtime._
val typ: universe.ClassSymbol = universe.runtimeMirror(cls.getClassLoader).classSymbol(cls)