检测Scala对象中的内部对象 [英] detect inner objects in a scala object
本文介绍了检测Scala对象中的内部对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想获得一个 scala 对象的内部对象列表.示例代码:
I want to get a list of inner objects of a scala object. Sample code:
object Outer {
val v = "-"
def d = "-"
object O1
object O2
}
object Main {
def main(args: Array[String]) {
Outer.getClass.getDeclaredMethods.map(_.getName) foreach println // prints d and v
// Outer.getClass.get ... Objects???
}
}
我可以找到 v 和 d,但是我怎样才能找到 O1 和 O2 呢?
I can find v and d, but how can I find O1 and O2 ?
推荐答案
使用 Scala 2.10(自 Milestone 4 起)中的新反射库,可以获得内部对象:
With the new reflection library in Scala 2.10 (since Milestone 4) it is possible to get the inner objects:
scala> import scala.reflect.runtime.{universe => u}
import scala.reflect.runtime.{universe=>u}
scala> val outer = u.typeOf[Outer.type]
outer: reflect.runtime.universe.Type = Outer.type
scala> val objects = outer.declarations.filter(_.isModule).toList
objects: List[reflect.runtime.universe.Symbol] = List(object O1, object O2)
这篇关于检测Scala对象中的内部对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文