How to Write a Multiline Lambda in Java 8

A short example of how to make multiline lambda functions in Java 8

For the most part, single line lambda functions are all you need.

This is a single line lambda:

Predicate<String> isBig = str -> str.length() > 10;

Sometimes one line is not enough to express the complexity of the lambda. How do you make a multiline lambda?

This is how:

//set up - elsewhere in the pseudo code:
public Sound getSound() throws MuteAnimalException {...}
Predicate<Sound> barks = sound -> Sound.valueOf("bark").equals(sound);


//payoff, a multiline lambda
Predicate<Animal> isDog = animal -> {
    try {
        return barks.test(animal.getSound());
    } catch (MuteAnimalException e){
        logger.severe(e.getMessage);
        return false;
    }
};
Tags: how-to tutorial guide functional-programming java8

Get great articles about development every month here ⬇️