相关疑难解决方法(0)

我们可以从Scala 2.10获得哪些反射功能?

Scala 2.10带来了除了提供JVM(或者我猜CLR)之外的反射.

我们还有什么特别值得期待的,它将如何在平台上得到改善?

例如,是否会有一个类反映语言在字段和访问器方法之间的可转换性,以便我可以迭代对象的属性?

reflection scala

31
推荐指数
3
解决办法
3611
查看次数

Scala Class.getFields

出于我的应用程序的目的,我需要能够在运行时找到类型(不是实例)的字段列表和这些字段的类型.到目前为止,我只能得到一个包含getter的case类的方法列表,classOf[MyCaseClass].getMethods并且从简单的类中没有任何用处.我错过了什么吗?有没有针对这种目的的反射库?怎么做得好?

reflection scala

8
推荐指数
2
解决办法
6467
查看次数

scala反射:getDeclaringTrait?

当我研究一个新的库时,我有时会发现很难找到一个方法的实现.

在Java中,Metho#getDeclaringClass提供声明给定方法的类.因此,通过迭代Class#getMethods,我可以找到每个方法,声明它的类.

在Scala中,traits被转换为Java接口,并且扩展trait的类将通过将它们转发到静态定义这些方法的伴随类来实现trait的方法.这意味着,Method#getDeclaringClass将返回类,而不是特征:

scala> trait A { def foo = {println("hi")}}
defined trait A

scala> class B extends A
defined class B

scala> classOf[B].getMethods.find(_.getName() == "foo").get.getDeclaringClass
res3: java.lang.Class[_] = class B
Run Code Online (Sandbox Code Playgroud)

解决这个问题的最佳方法是什么?意思是,给定一个类,我如何得到一个List [(Method,Class)],其中每个元组是一个方法,并且它被声明为trait/class?

reflection scala

7
推荐指数
1
解决办法
2004
查看次数

标签 统计

reflection ×3

scala ×3