Метод andThen
Метод andThen класса Consumer создает
новый Consumer, который выполняет
текущий Consumer, а затем переданный
в параметре второй Consumer. В первый параметр
мы передаем Consumer, который будет выполнен
после текущего Consumer. Если первый
Consumer выбросит исключение, второй
Consumer выполнен не будет.
Синтаксис
consumer.andThen(after)
Пример
Давайте объединим два Consumer и применим
их к каждому элементу списка:
import java.util.List;
import java.util.function.Consumer;
public class Main
{
public static void main(String[] args)
{
List<String> list = List.of("a", "b", "c", "d", "e");
Consumer<String> first = s -> System.out.println("first: " + s);
Consumer<String> second = s -> System.out.println("second: " + s);
Consumer<String> combined = first.andThen(second);
list.forEach(combined);
}
}
Результат выполнения кода:
"first: a"
"second: a"
"first: b"
"second: b"
"first: c"
"second: c"
"first: d"
"second: d"
"first: e"
"second: e"
Пример
Давайте объединим три Consumer в цепочку
и применим результат к списку чисел:
import java.util.List;
import java.util.function.Consumer;
public class Main
{
public static void main(String[] args)
{
List<Integer> list = List.of(1, 2, 3, 4, 5);
Consumer<Integer> first = n -> System.out.println("first: " + n);
Consumer<Integer> second = n -> System.out.println("second: " + n);
Consumer<Integer> third = n -> System.out.println("third: " + n);
Consumer<Integer> combined = first.andThen(second).andThen(third);
list.forEach(combined);
}
}
Результат выполнения кода:
"first: 1"
"second: 1"
"third: 1"
"first: 2"
"second: 2"
"third: 2"
"first: 3"
"second: 3"
"third: 3"
"first: 4"
"second: 4"
"third: 4"
"first: 5"
"second: 5"
"third: 5"