
Posted on • Originally published atgunnargissel.com on
How to Write a Multiline Lambda in Java 8
For the most part, single line lambda functions are all you need.
This is a single line lambda:
Predicate<Sound> isBark = sound -> Sound.valueOf("bark").equals(sound);
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 Animal interface: public Sound getSound() throws MuteAnimalException {...} Predicate<Sound> isBark = sound -> Sound.valueOf("bark").equals(sound); //payoff, a multiline lambda Predicate<Animal> isDog = animal -> { try { return isBark.test(animal.getSound()); } catch (MuteAnimalException e){ logger.severe(e.getMessage); return false; } };
Top comments(2)

- Email
- LocationMinnesota
- EducationMasters in Applied Math
- WorkSoftware Engineer at Black River Systems Co.
- Joined
TheJava lambda syntax allows single line statementsor statement blocks which can be arbitrarily long. So theisBark
predicate is good and reusable but you could stuff as many lines as you like into the lamba:
Predicate<Animal>isDog=animal->{try{Soundsound=animal.getSound();returnsound.equals(Sound.valueOf("bark"));}catch(MuteAnimalExceptione){logger.severe(e.getMessage);returnfalse;}};

- Email
- LocationAlaska
- EducationBachelor's in Physics
- WorkApplication Developer at NOAA
- Joined
That is true, and reminds me of a change I had thought of for my single line lambda demo. brb, editing example
For further actions, you may consider blocking this person and/orreporting abuse