import java.util.Optional; class Example { public static void main(String[] args) { /* should print Hi */ Optional a = Optional.of("Hi"); System.out.println(StOptional.reduce(a)); /* should print null */ Optional b = Optional.empty(); System.out.println(StOptional.reduce(b)); /* should print null */ Optional c = null; System.out.println(StOptional.reduce(c)); } } /** * Stop Optionals from being used! * safely reducing optionals back to their original types. */ final class StOptional { /** * Reduce any optional down to it's original type * * @param o Optional to reduce * @return value of optional */ public static final T reduce(Optional o) { return nullish(o) ? null : o.get(); } /** * Checks if Optional is null or empty * * @param o Optional * @return boolean true if null or empty, false otherwise */ public static final boolean nullish(Optional o) { if (o == null || o.isEmpty()) return true; return false; } }