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
时,AbstractSeq
有 N
方法,所有其他 classes 继承它们。因此,您可以用 1 个额外的 class 换取 (M-1)*N
个更少的方法。
我正在浏览 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
时,AbstractSeq
有 N
方法,所有其他 classes 继承它们。因此,您可以用 1 个额外的 class 换取 (M-1)*N
个更少的方法。