Когда я отлаживаю, я вижу, что внутренний класс здесь получает ссылку на свой внешний класс, даже если он не использует никаких значений из внешнего класса.Единственная причина, по которой внутренний класс является внутренним классом, заключается в том, что он может ссылаться на типы внешнего класса.
trait CorrectingParserWriter extends OptimizingParserWriter with EditorParserWriter {
...
final class SRCons[+Result](val head: LazyParseResult[Result], _tail: => SortedParseResults[Result]) extends SortedParseResults[Result] {
...
}
...
}
Я добавил final
в попытке удалить ссылку на внешний, но безуспешно.
Чтобы уменьшить потребление памяти, я не хочу, чтобы SRCons для небольших объектов имела ссылку на свой внешний класс.Однако удаление этого внутреннего класса вводит много параметров типа, что делает код беспорядочным.