scala - 将 Class[_] 转换为 Universe.Type/Symbol

标签 scala reflection

我试图列出包中的所有类,并通过新的反射 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)

关于scala - 将 Class[_] 转换为 Universe.Type/Symbol,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15008367/

相关文章:

scala - 什么是错的 : "value Parsers is not a member of package scala.util.parsing.combinator"?

Scala:使用反射来发现你的内在对象(和欲望)?

Node.js - 搜索 "util"模块;识别核心模块

java - 使用反射在运行时更改 JLabel 的背景

c++ - C++派生类中的反射工厂无法访问 protected 方法?

Java如何通过反射检查字段是否已初始化或是否为默认值?

java - 使用大小为 N 的自定义字母表将基数 10 的数字转换为基数 (Scala)

scala - 电梯导入 net.liftweb 返回错误 "not found: value net"

scala - 使用返回期权 future 的函数映射后,展平期权的 future

scala - 为什么 Akka Actor 的默认行为是一个接一个地处理消息?