2011-11-08 80 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不工作​​? –

相關問題