如何在Scala中获取(特定种类)字段的名称?

时间:2011-11-08 22:21:06

标签: scala reflection

我想得到一些字段的名称。特别是,我有类似

的东西
trait Special[T] {
    // do something here
}

class MyClass {
  object x extends Special[Int]
  object y extends Special[String]
  // other fields may be intermixed
  // or I could extend a trait that 
  // has its own fields
}

如何获取在MyClass中扩展Special的字段列表?我试过了

classOf[MyClass].getDeclaredFields.toList.filter(_.getType.isInstanceOf[Special])

和几种类似的事情,但参数一直让我搞砸。

我认为我遇到了Class<?>Type问题,但我尝试了一些getInterfaces()getGenericType()的实验并且没有进一步研究。

请帮忙! :-) 托德

1 个答案:

答案 0 :(得分:2)

classOf[MyClass].getDeclaredFields.filter(_.getType.getInterfaces.contains(classOf[Special[_]]))