- Если C — локальный класс, то:
Если C встречается в статическом контексте, то у i нет непосредственно включающего экземпляра. - Иначе, если выражение создания экземпляра класса происходит в статическом контексте, то возникает ошибка времени компиляции.
- Иначе, пусть O — класс, непосредственно включающий C. Пусть n — целое число такое, что O — n-е лексически включающее объявление типа класса, в котором появится выражение создания экземпляра класса.
Непосредственно включающий экземпляр i является n-м лексически включающим экземпляром this.
Применимый код, который я могу придумать - это предложение пытается сказать следующее:Код: Выделить всё
class Outer { void instanceMethod() { class LocalNonStaticContext { void print() { System.out.println("Has enclosing instance of Outer."); } } new LocalNonStaticContext().print(); // Valid because we're in a non-static context. } static void staticMethod() { // Compile-time error: LocalNonStaticContext requires an enclosing instance. // new LocalNonStaticContext(); } }
- Но это кажется слишком наивным - поскольку подразумевается, что область действия локального класса ограничена методом, в котором он объявлен - следовательно, невозможно вызвать его из любого другого метода.
Подробнее здесь: https://stackoverflow.com/questions/792 ... compilatio
Выражение создания экземпляра локального класса происходит в статическом контексте – ошибка компиляции? ⇐ JAVA
Выражение создания экземпляра локального класса происходит в статическом контексте – ошибка компиляции?
Рассмотрим следующий отрывок из JLS: §15.9.2. Определение включающих экземпляров
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Доступ к атрибуту экземпляра родительского класса из экземпляра дочернего класса?
Anonymous » » в форуме Python - 0 Ответы
- 52 Просмотры
-
Последнее сообщение Anonymous
-