Scala - AbstractSeq 如何减少字节码大小

Scala - How AbstractSeq reduces bytecode size

我正在浏览 scaladocs 并遇到了 AbstractSeq class。他们将其描述为

Explicit instantiation of the Seq trait to reduce class file size in subclasses.

这如何减小子classes 的文件大小? Subclasses 无论如何都会得到所有的方法吧?谁能解释一下这是如何工作的

当您直接扩展特征时,class 为每个在特征中实现的方法获取一个方法。

所以假设您有 N 方法,在 Seq 中实现(并且特征 Seq 本身扩展)。如果您有 M class 扩展 Seq,他们需要 M*N 方法。当它们扩展 AbstractSeq 时,AbstractSeqN 方法,所有其他 classes 继承它们。因此,您可以用 1 个额外的 class 换取 (M-1)*N 个更少的方法。