Chapter 7. Practical Thinking
Many of the examples I’ve featured thus far are abstract, because I’m illustrating the different thinking mode required for functional programming. But at some point you have to take these lessons back to the real world.
In this chapter, I cover some real-world occurrences of functional thinking, starting with Java 8 and moving to functional architectures and web frameworks.
Java 8
I’ve shown the lambda syntax for Java 8 in numerous examples throughout the book. Rather than merely bolt higher-order functions onto the language, the Java 8 engineers made clever choices to enable older interfaces to take advantage of functional features.
In Chapter 2, I showed an example of the “company process,” along with the Java 8 solution, repeated here in Example 7-1.
publicStringcleanNames(List<String>names){if(names==null)return"";returnnames.stream().filter(name->name.length()>1).map(name->capitalize(name)).collect(Collectors.joining(","));}privateStringcapitalize(Stringe){returne.substring(0,1).toUpperCase()+e.substring(1,e.length());}
With streams in Java 8, you can chain and compose functions together
until you call a function that generates output (called a terminal
operation), such as collect() or forEach(). The filter() method
in Example 7-1 is the same filter method I’ve shown
throughout the book. The filter() method accepts a higher-order function that returns a Boolean value, which is ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access