Returning null for "no result" leads to the most common Java crash, the NullPointerException. Optional makes the empty case visible in the return type, so the caller has to handle it. Use it as a return type for lookups that may find nothing, like findFirst. Do not use it for fields or method parameters, and avoid calling get without checking, which just moves the crash.