我试图列出一个包中的所有类,并通过新的反射api(2.10)提取一些元数据信息。
我可能是错的,但是似乎不支持在scala api上的包列表中列出类。
我正在使用java library,但它仅返回Class<?>
可以将Class[_]
转换为universe.Type
或universe.Symbol
吗?
最佳答案
您应该使用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)