Автор оригинала: mkyong.
В Java 8/|Потребитель является функциональным интерфейсом; он принимает аргумент и ничего не возвращает.
@FunctionalInterface public interface Consumer{ void accept(T t); }
1. Потребитель
package com.mkyong.java8; import java.util.function.Consumer; public class Java8Consumer1 { public static void main(String[] args) { Consumerprint = x -> System.out.println(x); print.accept("java"); // java } }
Выход
java
2. Функция Более Высокого Порядка
2.1 Этот пример принимает Потребитель
в качестве аргумента имитирует forEach
для печати каждого элемента из списка.
package com.mkyong.java8; import java.util.Arrays; import java.util.List; import java.util.function.Consumer; public class Java8Consumer2 { public static void main(String[] args) { Listlist = Arrays.asList(1, 2, 3, 4, 5); // implementation of the Consumer's accept methods. Consumer consumer = (Integer x) -> System.out.println(x); forEach(list, consumer); // or call this directly forEach(list, (Integer x) -> System.out.println(x)); } static void forEach(List list, Consumer consumer) { for (T t : list) { consumer.accept(t); } } }
Выход
1 2 3 4 5 1 2 3 4 5
2.2 Тот же Для каждого
способ принятия Потребитель
в качестве аргумента; на этот раз мы выведем длину строки.
package com.mkyong.java8; import java.util.Arrays; import java.util.List; import java.util.function.Consumer; public class Java8Consumer3 { public static void main(String[] args) { Listlist = Arrays.asList("a", "ab", "abc"); forEach(list, (String x) -> System.out.println(x.length())); } static void forEach(List list, Consumer consumer) { for (T t : list) { consumer.accept(t); } } }
Выход
1 2 3
Видите гибкость?
Рекомендации
- Потребительский JavaDoc
- Java 8 Примеры предикатов
Оригинал: “https://mkyong.com/java8/java-8-consumer-examples/”