Sobes.tech
Junior
89
questionbank

Что такое анонимные классы в Java и где они могут быть применены?

Ответ от нейросети

sobes.tech AI

Анонимные классы в Java — это локальные классы без имени. Они объявляются и создаются одновременно. Обычно используются, когда требуется однократная реализация интерфейса или расширение абстрактного или обычного класса.

Применение анонимных классов:

  • Обработчики событий в GUI: Часто используются для создания обработчиков нажатий кнопок или других действий пользователя.

    // Пример с Swing ActionListener
    JButton button = new JButton("Нажми меня");
    button.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            System.out.println("Кнопка нажата!");
        }
    });
    
  • Реализация интерфейсов с одним абстрактным методом (SAM interfaces): До появления лямбда-выражений были основным способом реализации функциональности для таких интерфейсов.

    // Пример с Runnable
    new Thread(new Runnable() {
        @Override
        public void run() {
            System.out.println("Поток запущен");
        }
    }).start();
    
  • Создание объектов "на лету": Когда нужно быстро создать объект с измененным поведением от существующего класса без необходимости создавать отдельный именованный класс.

    // Пример расширения абстрактного класса
    AbstractList<String> cityList = new AbstractList<String>() {
        private String[] cities = {"Москва", "Санкт-Петербург"};
    
        @Override
        public String get(int index) {
            return cities[index];
        }
    
        @Override
        public int size() {
            return cities.length;
        }
    };
    System.out.println(cityList.get(0)); // Выведет: Москва
    

Анонимные классы имеют доступ к final или effectively final локальным переменным области, в которой они объявлены. Они не могут иметь статических членов и не могут быть abstract или final.