假设我有一个类型,结果:
trait Result[+T] {
def getValue: T
}
以及该特征的子类型AnyValResult:
class AnyValResult(value: AnyVal) extends Result[AnyVal] {
override def getValue: AnyVal = value
}
我希望能够向Scala的反射库查询Result [_]类型的所有子类型,并使其返回包含AnyValResult的集合。
我已经看到很多人问这个问题,而且所有人似乎都说他们是使用第三方工具完成的。这是几年前的事。缺少对第三方工具的反向工程,是否有一种方法可以在最新版本的Scala中引入?如果我可以直接通过反射进行操作,我宁愿不必在Github上引用一些随机项目。
答案 0 :(得分:0)
子类可以在运行时动态加载/创建(如果特征未密封),因此通常不能直接使用Java或Scala反射来完成。这不是Scala的最新版本是什么,这就是JVM的工作方式。引擎应加载每个类,并检查该类是否扩展了特征。