dev*_*ull 7 reflection scala object
我想获得一个scala对象的内部对象列表.示例代码:
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???
}
}
Run Code Online (Sandbox Code Playgroud)
我可以找到v和d,但我怎样才能找到O1和O2?
使用Scala 2.10中的新反射库(从里程碑4开始),可以获取内部对象:
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)
Run Code Online (Sandbox Code Playgroud)