Ответ
Анонимный класс в Java — это локальный класс без имени, который объявляется и создается в одном выражении с помощью оператора new. Он используется для быстрого создания одноразовой реализации интерфейса или расширения класса.
Ключевые особенности:
- Не имеет имени: Компилятор генерирует для него имя вида
OuterClass$1. - Одноразовое использование: Создается в месте объявления, нельзя повторно использовать для создания других объектов.
- Доступ к переменным: Имеет доступ к
finalили effectively final переменным внешнего класса или метода. - Ограничение наследования: Может либо расширять один класс, либо реализовывать один интерфейс.
Примеры:
- Реализация интерфейса
Runnable:Thread thread = new Thread(new Runnable() { @Override public void run() { System.out.println("Запуск из анонимного класса!"); } }); thread.start(); - Расширение класса
ArrayList:List<String> list = new ArrayList<>() { @Override public boolean add(String s) { System.out.println("Добавлен элемент: " + s); return super.add(s); } };
Применение: Часто использовались для создания обработчиков событий в Swing/AWT, компараторов, запуска потоков. В современном Java (8+) во многих случаях их заменяют лямбда-выражения и ссылки на методы.