Ответ
Consumer<T> и Supplier<T> — это функциональные интерфейсы из пакета java.util.function, представляющие два противоположных паттерна.
Consumer (Потребитель)
- Сигнатура:
void accept(T t) - Назначение: Выполняет операцию над переданным объектом, не возвращая результат. Используется для модификации или потребления данных.
- Пример: Вывод строки в консоль.
Consumer<String> printer = s -> System.out.println(s); printer.accept("Hello, World!"); // Выполняет действие
Supplier (Поставщик)
- Сигнатура:
T get() - Назначение: Не принимает аргументов, но возвращает объект типа
T. Используется для ленивой генерации или предоставления значений. - Пример: Генерация текущей даты.
Supplier<LocalDate> todaySupplier = () -> LocalDate.now(); LocalDate today = todaySupplier.get(); // Получает значение
Ключевое отличие
Consumer—void accept(T): Принимает данные для обработки.Supplier—T get(): Предоставляет данные.