У меня есть код вроде следующего:Почему объект вложенного класса нельзя использовать в качестве параметра конструктора супертипа?
class A {
final Object data;
A(Object _data) {
data = _data;
}
class B extends A {
B() {
super(new C());
}
class C { }
}
}
Я получаю следующее сообщение об ошибке:
Cannot reference 'C' before supertype constructor has been called
Я не понимаю, почему это не представляется возможным.
Есть ли способы обхода? Я хочу, чтобы data
был окончательным, а классы - вложенными, так как они находятся в коде выше (я не хочу создавать для каждого класса другой файл, потому что классы довольно малы и в моем реальном коде было бы логичнее для них чтобы быть вложенным)
С должным уважением, я задаю вопрос вашему дизайну. Внутренний класс, который расширяет внешний класс, это странно ... Не желая иметь разные файлы для классов, вы летите против java-конвенций. Таким образом, нет очевидного обходного пути, так как C не может быть статическим, он должен иметь экземпляр B. –