【发布时间】:2019-05-11 18:48:09
【问题描述】:
我正在尝试回答“不耐烦的 Scala 第 2 版”一书中的练习题。问题是这样的:
查看
BitSet类,并绘制其所有超类和特征的图表。忽略类型参数([...] 中的所有内容)。然后给出特征的线性化。
我想到的第一印象是把BitSet的所有超类/特征放在一个List中。
为了递归获取给定类的超类,我设法在 sn-p 下面使用
def recurGetSupers(cls: Class[_]): List[Class[_]] = {
cls :: Option(cls.getSuperclass).map(recurGetSupers).getOrElse(Nil)
}
但是,使用上面的 sn-p 不会像预期的那样给我一个类列表,而是如下:
scala> recurGetSupers(classOf[scala.collection.BitSet])
res0: List[Class[_]] = List(interface scala.collection.BitSet)
那么,我的问题是如何获取给定特征的超类或特征?
【问题讨论】:
-
我认为练习的想法不是制作程序,而是查看班级的documentation并开始“绘制”图表。跨度>
标签: scala generics inheritance traits