Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
20 Май 2023
2 мин
598

Ошибка «Is not an enclosing class» в Java

В программировании на Java иногда возникает ошибка «Is not an enclosing class». Эта ошибка обычно возникает, когда программист пытается создать объект внутреннего

В программировании на Java иногда возникает ошибка «Is not an enclosing class». Эта ошибка обычно возникает, когда программист пытается создать объект внутреннего класса извне его внешнего класса.

Чтобы понять проблему, рассмотрим в качестве примера следующий код:

public class OuterClass {
    class InnerClass {
    }
}

public class Test {
    public static void main(String[] args) {
        InnerClass ic = new OuterClass.InnerClass();
    }
}

В этом примере попытка создать объект InnerClass из класса Test вызовет ошибку компиляции «Is not an enclosing class».

Это происходит потому, что внутренний класс InnerClass не является статическим и, следовательно, не может быть инстанциирован без объекта внешнего класса OuterClass.

Существует два основных способа решения этой проблемы:

  1. Изменить внутренний класс, чтобы сделать его статическим. Статический внутренний класс не требует объекта внешнего класса для его создания.
public class OuterClass {
    static class InnerClass {
    }
}

public class Test {
    public static void main(String[] args) {
        InnerClass ic = new OuterClass.InnerClass();
    }
}
  1. Создать объект внешнего класса и использовать его для создания объекта внутреннего класса.
public class OuterClass {
    class InnerClass {
    }
}

public class Test {
    public static void main(String[] args) {
        OuterClass oc = new OuterClass();
        InnerClass ic = oc.new InnerClass();
    }
}

В обоих примерах ошибки компиляции больше нет.

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

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий