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

Kod źródłowy do wglądu na GitHub!

Jeśli chcesz uzyskać dostęp do GitHuba na 30 dni i pobrać kod źródłowy wyślij smsa o treśći DOSTEP.EDUSESSION na numer 7943. Tyle wiedzy a koszt to tylko 9 PLN (11.07 PLN z VAT).





Leave a comment

Your email address will not be published.


*