Почему этот внутренний класс Scala, который не использует внешний класс, все еще получает ссылку на него? - PullRequest
0 голосов
/ 28 апреля 2019

Когда я отлаживаю, я вижу, что внутренний класс здесь получает ссылку на свой внешний класс, даже если он не использует никаких значений из внешнего класса.Единственная причина, по которой внутренний класс является внутренним классом, заключается в том, что он может ссылаться на типы внешнего класса.

trait CorrectingParserWriter extends OptimizingParserWriter with EditorParserWriter {
  ...
  final class SRCons[+Result](val head: LazyParseResult[Result], _tail: => SortedParseResults[Result]) extends SortedParseResults[Result] {
    ...
  }
  ...
}

Я добавил final в попытке удалить ссылку на внешний, но безуспешно.

Чтобы уменьшить потребление памяти, я не хочу, чтобы SRCons для небольших объектов имела ссылку на свой внешний класс.Однако удаление этого внутреннего класса вводит много параметров типа, что делает код беспорядочным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...