Scala 標準ライブラリには、「サブクラスのクラス ファイル サイズを縮小するための明示的なインスタンス化」というパターンがいくつかあります。たとえば、Iterator.scala では次のようになります。
/** Explicit instantiation of the `Iterator` trait to reduce class file size in subclasses. */
private[scala] abstract class AbstractIterator[+A] extends Iterator[A]
ソース ファイル全体で、特性自体の代わりに抽象クラスを使用して匿名クラスを構築します。明らかに、コメントは、なぜこれが行われるのかという十分な動機をすでに与えています。しかし、私にとって些細なことではありません: なぜこのトリックはファイル サイズを縮小するのでしょうか? サブクラスのサイズが影響を受けるのはなぜですか? Iterator 自体は影響を受けません。