Ответ
Consumer<T> — это функциональный интерфейс из пакета java.util.function. Он представляет операцию, которая принимает один аргумент типа T и не возвращает результата (void).
Основное назначение: выполнение действий (побочных эффектов) над объектом, например, модификация, логирование или вывод.
Простой пример:
Consumer<String> printer = s -> System.out.println(s);
printer.accept("Hello, Consumer!"); // Выведет: Hello, Consumer!
Consumer<String> upperCasePrinter = str -> {
String upper = str.toUpperCase();
System.out.println(upper);
};
upperCasePrinter.accept("test"); // Выведет: TEST
Частое применение в Stream API:
List<String> names = Arrays.asList("Anna", "Bob", "Clara");
// forEach принимает Consumer
names.forEach(name -> System.out.println("Processing: " + name));
Композиция Consumers: метод andThen позволяет объединить несколько действий.
Consumer<String> log = s -> System.out.println("Log: " + s);
Consumer<String> notify = s -> System.out.println("Notifying about: " + s);
Consumer<String> fullPipeline = log.andThen(notify);
fullPipeline.accept("event");
// Вывод:
// Log: event
// Notifying about: event
Важно: Consumer предназначен именно для действий с побочными эффектами, а не для преобразования данных (для этого используется Function<T, R>).