检测Scala对象中的内部对象 [英] detect inner objects in a scala object

查看:54
本文介绍了检测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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆