Как я могу получить имена (определенных видов) полей в Scala? - PullRequest
1 голос
/ 09 ноября 2011

Я хочу получить имена некоторых полей. В частности у меня что-то типа

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
}

Как я могу получить список полей, расширяющих Special в MyClass? Я пробовал

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

и несколько подобных вещей, но параметры меня все портят.

Я думаю, что у меня проблема Class<?> против Type, но я попробовал несколько экспериментов с getInterfaces() и getGenericType() и не получил ничего дальше.

Пожалуйста, помогите! :-) Тодд

1 Ответ

2 голосов
/ 09 ноября 2011
classOf[MyClass].getDeclaredFields.filter(_.getType.getInterfaces.contains(classOf[Special[_]]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...