今天我想了解 的超类型List
:
sealed abstract class List[+A] extends AbstractSeq[A]
with LinearSeq[A]
with Product
with GenericTraversableTemplate[A, List]
with LinearSeqOptimized[A, List[A]]
哇,List
已经有五个直接超类型了。让我们随机选择一个:
trait LinearSeq[+A] extends Seq[A]
with scala.collection.LinearSeq[A]
with GenericTraversableTemplate[A, LinearSeq]
with LinearSeqLike[A, LinearSeq[A]]
好的,让我们选择名称最相似的一个:
trait LinearSeqLike[+A, +Repr <: LinearSeqLike[A, Repr]] extends SeqLike[A, Repr]
啊,看来我们到了某个地方,只剩下一个超类型:
trait SeqLike[+A, +Repr] extends Any
with IterableLike[A, Repr]
with GenSeqLike[A, Repr]
with Parallelizable[A, ParSeq[A]]
这时我放弃了。这张图有多深?所有这些超类型中的哪些在概念上是相关的,哪些只是实现细节或优化技巧?
如何理解如此庞大的继承图?