Optional Parameters in Java 8 Lambda Expressions

Yeah, they don't really exist, but we can use polymorphism, method overloading and default methods instead to make it a bit more convenient to use our APIs.

As an example, here's an event bus implementation where I can register event handlers with an optional header parameter.

  Bus bus = new Bus();
  bus.register(event -> System.out.println("I gots an event"));
  bus.register((event,header) -> System.out.println("I gots an event w/ header"));

Here are the dirty details on how you can do this (and - when dispatching - events, use default methods to avoid type coercion.

 

 

 

 

Top