Я пытаюсь ответить на практический вопрос из Книги "Scala для нетерпеливых 2-е издание".Вопрос такой:
Посмотрите на класс BitSet
и создайте диаграмму всех его суперклассов и признаков. Игнорируйте параметры типа (все, что находится внутри […]). Затем дайтелинеаризация черт.
Первое впечатление, о котором я думаю, это получить все суперклассы / черты BitSet
в Списке.
Чтобы рекурсивно получить суперклассы для заданногокласс, мне удается использовать приведенный ниже фрагмент
def recurGetSupers(cls: Class[_]): List[Class[_]] = {
cls :: Option(cls.getSuperclass).map(recurGetSupers).getOrElse(Nil)
}
Однако использование приведенного выше фрагмента не даст мне список классов, как ожидается, но ниже:
scala> recurGetSupers(classOf[scala.collection.BitSet])
res0: List[Class[_]] = List(interface scala.collection.BitSet)
Итак, мойВопрос в том, как получить суперкласс или черту за данную черту?