Как узнать, относится ли свойство type из typeSignature к любому из классов, расширяющих определенный класс? - PullRequest
0 голосов
/ 17 октября 2019

У меня есть следующий код, который проходит через свойства класса

val members = typeOf[Product].members.filterNot(_.isMethod).foreach {
  field: Symbol => {
    val t = field.typeSignature
  }
}

также у меня есть абстрактный класс A и классы B, C, D и т. Д., Которые расширяют его

Как я могузнать в моем цикле через свойства класса Product, если свойство имеет тип, который расширяет A. Это может быть или типы B, C, D и т. д. ... или это может быть Option [B], Option [C], Option [D]и т. д. ... или List [B], List [C], List [D] и т. д.

Я пробовал внутри метода foreach

typeOf[A].contains(t)

, но он всегда возвращает false

Заранее спасибо

1 Ответ

2 голосов
/ 17 октября 2019

Вы можете использовать оператор <:< для проверки сигнатуры типа на typeOf[T], с T типом для сравнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...