Чтение главы 20 книги Ордыского о Скале, я обнаружил, что внутренние классы зависят от пути. Среди других функций это означает, что они могут быть созданы только внутри внешнего класса или предоставлены экземпляр внешнего класса.Статический внутренний класс против внутреннего класса Companion
Возникает вопрос: я хотел бы реализовать static inner class
в Scala, но автор предполагает, что это невозможно. Я сразу же подумал о создании «внутреннего класса» (давайте назовите его Inner
) членом компаньона Outer
.
Принятый ответ this вопрос, кажется, указывает на это направление. Но гонит к проблеме: Тип Inner
«s ins't Outer#Inner
, я мог бы попробовать что-то вроде:
object Outer {
class Inner extends Outer#Inner { }
}
Это не работает, однако. Знаете ли вы, что для этого есть работа? У меня есть подозрение, что это можно сделать с абстрактными типами, но я не уверен.
Обратите внимание, что внутренний класс объектов-компаньонов не соответствует классу Inner
, не относящемуся к пути, из-за его типа.
Я предполагаю, что вы не просто беспокоитесь о том, что имя выглядит красиво? Каковы механические последствия/поведение, которые вам не хватает, и хотите подражать с вами попыткой «Наружный # Внутренний»? –
@AndrzejDoyle Нет, меня не просто беспокоит имя, которое можно решить с помощью ответа, который я связал. Я хотел бы получить внутренний класс, который не зависит от пути или, по крайней мере, знать, возможно ли это. –