Java 8 – Supplier & Consumer
Java 8 – Supplier & Consumer
Supplier oraz Consumer to interfejsy funkcyjne z pakietu java.util.function. Supplier posiada jedną metodę która zwraca dowolny typ danych natomiast nie przyjmuje żadnego argumentu:
@FunctionalInterface public interface Supplier<T> { /** * Gets a result. * * @return a result */ T get(); }
Przykład wykorzystania interfejsu Supplier:
Supplier<Double> randomValue = () -> Math.random(); System.out.println(randomValue.get());
Wynik:
0.43726820249588905
Inny przykład:
final static List<Person> persons = Arrays.asList( new Person("Max" , 18), new Person("Peter" , 37), new Person("Pamela" , 24), new Person("David" , 33) ); persons.stream().forEach((arg) -> { printAgesSupplier(() -> arg.getAge()); }); public static void printAgesSupplier(Supplier supplier) { System.out.println(supplier.get()); }
Wynik:
18 37 24 33
Consumer posiada jedną metodę która zwraca typ void oraz przyjmuje argument dowolnego typu:
@FunctionalInterface public interface Consumer { void accept(T t); }
final static List<Person> persons = Arrays.asList( new Person("Max" , 18), new Person("Peter" , 37), new Person("Pamela" , 24), new Person("David" , 33) ); public static void main(String[] args) { Consumer<Person> consumer = ConsumerDemo::printAgeConsumer; consumer.accept(persons.get(0)); consumer.accept(persons.get(1)); consumer.accept(persons.get(2)); consumer.accept(persons.get(3)); } public static void printAgeConsumer(Person person) { System.out.println(person.getAge()); }
Wynik:
18 37 24 33
- http://github.com/mwarycha/JavaLeader.pl/tree/master/java-8/src/main/java/pl/javaleader/supplier
- http://github.com/mwarycha/JavaLeader.pl/tree/master/java-8/src/main/java/pl/javaleader/consumer
Leave a comment