Класс Consumer
Класс Consumer - это функциональный интерфейс из пакета
java.util.function, который представляет операцию,
принимающую один входной аргумент и не возвращающую никакого
результата. В единственный параметр мы передаем значение,
которое нужно потребить, то есть обработать внутри метода
accept. Поскольку интерфейс является функциональным,
его можно реализовать с помощью лямбда-выражения или ссылки
на метод. Класс Consumer часто используется в stream
для терминальных операций, таких как forEach и
peek, а также для передачи действий в другие методы.
Синтаксис
@FunctionalInterface
public interface Consumer<T>
{
void accept(T t);
default Consumer<T> andThen(Consumer<? super T> after)
}
Пример
Давайте создадим Consumer, который выводит полученное
значение в консоль, и применим его к строке:
import java.util.function.Consumer;
public class Main
{
public static void main(String[] args)
{
Consumer<String> print = s -> System.out.println(s);
print.accept("abcde");
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте используем Consumer вместе с методом
forEach для вывода каждого элемента списка:
import java.util.List;
public class Main
{
public static void main(String[] args)
{
List<Integer> list = List.of(1, 2, 3, 4, 5);
list.stream().forEach(n -> System.out.println(n));
}
}
Результат выполнения кода:
1
2
3
4
5
Пример
Давайте объединим два Consumer с помощью метода
andThen, чтобы выполнить их последовательно:
import java.util.function.Consumer;
public class Main
{
public static void main(String[] args)
{
Consumer<String> first = s -> System.out.println("First: " + s);
Consumer<String> second = s -> System.out.println("Second: " + s);
Consumer<String> combined = first.andThen(second);
combined.accept("abcde");
}
}
Результат выполнения кода:
"First: abcde"
"Second: abcde"