Optional — a container that may or may not hold a non-null value, preventing NullPointerException.
1// Creation2Optional<User> user = Optional.ofNullable(findUser(id));34// Safe access5String name = user6 .map(User::getName)7 .orElse("Unknown");89// With exception10String email = user11 .map(User::getEmail)12 .orElseThrow(() -> new UserNotFoundException(id));1314// Filter15Optional<User> admin = user.filter(u -> u.isAdmin());1617// FlatMap18Optional<Address> address = user19 .flatMap(User::getAddress);
Best practices:
new Optional().