Может ли статический внутренний класс расширить свой внешний класс? - PullRequest
9 голосов
/ 22 мая 2019
public class Outer {

    public static class Inner extends Outer {

    }
}

Кажется, он компилируется с моим компилятором openjdk8, но IntelliJ 2019.1 жалуется: Нет доступа к внешнему

Я думаю, что это может быть ошибка IntelliJ ..

РЕДАКТИРОВАТЬ: я подтверждаю, что это ошибка IntelliJ. Я решил это, установив IntelliJ с прилагаемым OpenJDK 11.

Ответы [ 3 ]

3 голосов
/ 22 мая 2019

Он должен работать и работать на моей машине.

IntelliJ IDEA 2019.1.2
Build #IU-191.7141.44

jdk1.8.0_201

Открытый вложенный класс может быть расширен как любой другой класс верхнего уровня, видимый для будущего подкласса.Это определенно не проблема Java, связанная с наследованием или видимостью.

Это может быть проблема IntelliJ, касающаяся способа сканирования пакета / проекта.Убедитесь, что нет других Outer классов.Да, вероятно, IDEA нашла другую Outher и украдкой пыталась получить к ней доступ.Проверьте также и ваш импорт.

3 голосов
/ 22 мая 2019

Это работает с использованием OpenJDK 11:

public class Outer {
    public static void main(String[] args) {
        Inner inner = new Inner();
        inner.foo();
    }

    void foo() {
        System.out.println("foo from Outer");
    }

    public static class Inner extends Outer {
        @Override
        void foo() {
            System.out.println("foo from Inner");
        }
    }
}

Выход:

foo from Inner
0 голосов
/ 22 мая 2019

да, вы можете.вот образец.

public class SampleClass {
       static abstract class Test{
          int num = 300;
          public abstract void display();
       }
       class DemoClass extends Test{
          public void display() {
             System.out.println("Hi how are you");
          }
       }
       public static void main(String args[]){
          SampleClass obj = new SampleClass();
          obj.new DemoClass().display();
       }
    }

о / п: Привет, как дела

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