Innerhalb der Scala-Standardbibliothek, bemerkte ich dies:Scala Sammelklasse, die sich erweitern kann? AbstractSeq Verwirrung
package scala
package collection
package mutable
import generic._
...
/** Explicit instantiation of the `Seq` trait to reduce class file size in subclasses. */
abstract class AbstractSeq[A] extends scala.collection.AbstractSeq[A] with Seq[A]
AbstractSeq[A] extends AbstractSeq[A] with Seq[A]?
Was ist hier los?
Zwei Fragen. Ist das Schreiben "Paket Scala Paket Sammlung Paket veränderbar" das gleiche wie "Paket scala.collection.mutable"? Zweitens, was ist das "Seq-Klasse-Dateigröße" zu reduzieren? –
Ich rate nur für die zweite Frage, aber in der Regel 'muable.AbstractSeq' wäre auch ein' generic.Seq' in den meisten Implementierungen, obwohl im Fall, dass diese Methoden (implementiert 'Seq') an dieser Stelle nicht eingemischt wurden Die Trait-Implementierungen müssten auch für die anderen Implementierungsklassen generiert werden. Wenn Sie also 5 konkrete Klassen hätten, hätten Sie 5 mal den Byte-Code für diese, während in diesem Fall - wegen virtueller Aufrufe - nur einmal (und immer noch in der Lage sein, sie zu überschreiben). –