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


Leave a comment

Your email address will not be published.


*