Создание экземпляра внутреннего класса из другого класса (но из того же пакета)

#java #oop #inner-classes

#java #ооп #внутренние классы

Вопрос:

Следующие классы определены в пакете по умолчанию.

Outer.java:

 public class Outer {

    public class Inner {

    }
}
  

Main.java:

 import Outer.Inner;

public class Main {

    public static void main(String[] args) {

        Outer.Inner inner = new Inner();
    }

}
  

Я получаю:

Внутренний не может быть преобразован в тип

Я знаю, что можно создать экземпляр внутреннего класса из того же пакета.
Что не так и как это исправить?

Спасибо.

Ответ №1:

Ваш внутренний класс должен быть статическим (в противном случае вам понадобится внешний экземпляр для создания внутреннего экземпляра, а это плохой дизайн), и вы должны использовать

 Outer.Inner inner = new Outer.Inner();
  

И нет, вы НИКОГДА не должны помещать классы в пакет по умолчанию.