Анонимные классы в Java

Анонимный класс одноразовая реализация интерфейса без создания полноценного класса.

То есть нам не нужно создавать много объектов, будет только один с данной реализацией.

Пример программы:

import java.util.*; interface Adder{ public double pow(double a, double b); } class AnonimousClass{ public static void main(String[] args) { // Как видим, мы передаем в метод println // объект на основе одноразовой реализации // интерфейса Adder и сразу пользуемся // этой реализацией, вызывая у этого объекта // только что реализованный pow // (то есть вызываем у реализованного // обьекта .pow(3,6)). System.out.println(new Adder() { public double pow(double a, double b){ double result = a; for(int i = 1; i < b; i++) result *= a; return result; } }.pow(3,6)); } }

Вывод:

Одноразовый он очевидно почему.

Потому что мы не создавали полноценный отдельный класс реализующий интерфейс, как мы делали это раньше. И мы даже не создавали ссылку для работы с созданным объектом, мы сразу вызвали у него .pow(3,6).

То есть вся эта реализация существовала для одной цели – вызова метода .pow(3,6) в методе println и всё. И больше нигде мы эту реализацию использовать не можем да и не должно быть нужно, она одноразовая.

Функциональный интерфейс

Изучите функциональные интерфейсы в Java: как один абстрактный метод позволяет использовать лямбда-выражения и анонимные классы для функционального программирования.
Time to read: 12

Лямбда выражения

Лямбда-выражения в Java: краткая реализация функциональных интерфейсов. Сравнение с анонимными классами и примеры использования с методами.
Time to read: 13

Java Stream API

Stream API в Java: обработка коллекций без ручной реализации. Фильтрация, сортировка, параллельные операции. Примеры использования map, filter, forEach.
Time to read: 10