【发布时间】:2021-02-21 12:15:21
【问题描述】:
我面临的情况是我需要按名称实例化一个类,但该类实际上是在对象中定义的 scala 类型别名(实际上是一个包对象)。我已经弄清楚了我需要的很多东西,但是我找不到一种方法来内省对象以获取类型别名。
具体来说,我有字符串“Foo.MyString”,我想根据以下定义实例化它的一个实例。
object Foo {
type MyString = String
}
我可以使用runtimeMirror.staticModule 获取符号,然后使用runtimeMirror.reflectModule,但是我找不到任何方法来解析“MyString”的类型别名。
要获取 Foo 的方法或字段,我可以使用 module.instance.getClass 下拉到 Java 自省,但 Java 显然没有获取类型别名的方法。
我也尝试过使用符号,但这只是让您获得符号的所有者,而不是“拥有”符号。
【问题讨论】:
-
@texasbruce 对不起,关于 Scala 反射,我猜你错了。看我的回答。
-
@texasbruce Scala 反射不仅可以看到 Java 世界中基于类的事物,还可以看到保留在 Scala 签名中的信息(ScalaSig,一种字节码中的 cmets)。
标签: scala reflection scala-reflect