我试图列出一个包中的所有类,并通过新的反射api(2.10)提取一些元数据信息。

我可能是错的,但是似乎不支持在scala api上的包列表中列出类。

我正在使用java library,但它仅返回Class<?>
可以将Class[_]转换为universe.Typeuniverse.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)

10-02 06:19