DEV Community

Deepak Devanand
Deepak Devanand

Posted on

Java Frappe: Optional<T>

The Optional object in Java (java.util.Optional) is a container object which may or may not have a value. Designed specifically to handle the null case in a safe and explicit way, the optionals help write more readable code.

Typical Usage

1) When returning an object that might be null

   public Optional<Employee> findEmployeeByName(String name) {
     Employee employee = repo.findEmployee(name);
     return Optional.ofNullable(employee);
   }
Enter fullscreen mode Exit fullscreen mode

2) To fallback upon receiving null

  • Return a default object

    Employee employee = findEmployeeByName("John")
                          .orElse(new Employee("Unknown", 20));
    
  • Return after a pipeline of operators

     Integer salary = findEmployeeByName("John")
                          .map(Employee::getSalary)
                          .orElse(30);
    
  • Run a callback if value exists

     findEmployeeByName("John")
                .ifPresent(employee -> {
                    kafkaTemplate.send("employee-key", employee, "employee-topic");
                });
    
  • Return an exception

     try {
        value = opDouble.orElseThrow(IOException::new);
     } catch (IOException e) {
        System.out.println("Exception " + e);
     }
    

    By default returns NoSuchElementException, if no value exists within the Optional.

Top comments (0)