Functional Programming w/ Java 8

What’s wrong with what we’ve been doing?

Mutability

A statement might be true at some point, but false later on

Functional Interfaces

  • Supplier
  • Predicate
  • Function
  • Consumer
  • Predicate
  • Function

Predicate<T>

“Take a T and return true or false”

Is a Person an adult?

Predicate<Person> isAnAdult = (person) -> person.age() >= 18;

Why is that any better than this?

boolean isAnAdult(Person person) {
    return person.age() > 18);
}

Function<T,R>

“Take a T and return an R”

Function<UUID,User>

“Take a UUID and return a User”

Hi

Frag 1 Frag 2