今日は、 のスーパータイプについて学びたいと思いましたList
。
sealed abstract class List[+A] extends AbstractSeq[A]
with LinearSeq[A]
with Product
with GenericTraversableTemplate[A, List]
with LinearSeqOptimized[A, List[A]]
うわー、List
すでに 5 つの直接的なスーパータイプがあります。ランダムに 1 つ選んでみましょう。
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]
ああ、どこかに到達しているようです。残っているスーパータイプは 1 つだけです。
trait SeqLike[+A, +Repr] extends Any
with IterableLike[A, Repr]
with GenSeqLike[A, Repr]
with Parallelizable[A, ParSeq[A]]
この時点で私はあきらめました。このグラフの深さはどれくらいですか? これらすべてのスーパータイプのうち、概念的に関連しているのはどれで、実装の詳細または最適化のトリックにすぎないのはどれですか?
このような膨大な継承グラフをどのように理解すればよいでしょうか?