2011-11-08 75 views
1

我想获得一些字段的名称。特别是,我有类似的东西如何获取Scala中(特定类型)字段的名称?

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的特殊字段的列表?我试过

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

和几种类似的东西,但参数不断拧我。

我想我有一个Class<?>Type问题,但我尝试了一些实验用getInterfaces()getGenericType()并没有得到任何更远。

请帮忙! :-) 托德

回答

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

这(主要)做到了。你必须在getInterfaces之后添加一个.toList。 – TOB

+0

为什么你认为它没有toList不工作​​? –

相关问题