Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Scala—AbstractSeq如何减少字节码大小_Java_Scala_Bytecode - Fatal编程技术网

Java Scala—AbstractSeq如何减少字节码大小

Java Scala—AbstractSeq如何减少字节码大小,java,scala,bytecode,Java,Scala,Bytecode,我在浏览scaladocs时遇到了AbstractSeq类。他们把它描述为 Seq trait的显式实例化,以减少子类中的类文件大小。 这如何减少子类的文件大小?子类将获得所有方法,对吗?有人能解释一下它是如何工作的吗?当您直接扩展一个trait时,类会为每个trait中的实现方法获取一个方法 假设您有N方法,这些方法在Seq中实现(traitsSeq本身扩展)。如果您有扩展Seq的M类,则它们需要M*N方法。当它们扩展AbstractSeq时,AbstractSeq具有N方法,所有其他类都继承

我在浏览scaladocs时遇到了
AbstractSeq
类。他们把它描述为

Seq trait的显式实例化,以减少子类中的类文件大小。


这如何减少子类的文件大小?子类将获得所有方法,对吗?有人能解释一下它是如何工作的吗?

当您直接扩展一个trait时,类会为每个trait中的实现方法获取一个方法

假设您有
N
方法,这些方法在
Seq
中实现(traits
Seq
本身扩展)。如果您有扩展
Seq
M
类,则它们需要
M*N
方法。当它们扩展
AbstractSeq
时,
AbstractSeq
具有
N
方法,所有其他类都继承它们。因此,您可以用一个额外的类来交换
(M-1)*N
更少的方法