Chapter 10. Using Optional as a better alternative to null


This chapter covers

  • What’s wrong with null references and why you should avoid them
  • From null to Optional: rewriting your domain model in a null-safe way
  • Putting optionals to work: removing null checks from your code
  • Different ways to read the value possibly contained in an optional
  • Rethinking programming given potentially missing values

Raise your hand if you ever got a NullPointerException during your life as a Java developer. Keep it up if this is the Exception you encounter most frequently. Unfortunately, we can’t see you at this moment, but we believe there’s a very high probability that your hand is raised now. We also guess you may possibly be thinking something like “Yes, I agree, NullPointerExceptions are a pain for any Java developer, novice, or expert, but there’s not much we can do about them, because this is the price we pay to use such a convenient, and maybe unavoidable, construct as null references.” This is a common feeling in the (imperative) programming world; nevertheless, it may not be the whole truth but more likely a bias with solid historical roots.

10.1. How do you model the absence of a value?

10.2. Introducing the Optional class

10.3. Patterns for adopting Optional

10.4. Practical examples of using Optional

10.5. Summary