Класс Optional был представлен в Java 8. Цель его использования — помощь разработчикам в обработке NullPointerException. Так, Optional позволяет не назначать полям класса значения null.
Есть несколько вариантов создания объект класса Optional :
- создание пустого объекта путём вызова статического метода empty() — Optional<T> empty = Optional.empty();
- вызов статического метода of() . Пример :
String name = "somestring";
Optional<String> opt = Optional.of(name);
Но аргумент, переданный в метод of(), не должен быть null, иначе будет NullPointerException. На этот случай есть ещё один вариант создания объекта класса Optional :
- вызов статического метода ofNullable() . Пример :
String name = null;
Optional<String> opt = Optional.ofNullable(name);
В этом примере не будет выброшено NullPointerException, а будет возвращён пустой объект Optional.
Проверить, есть ли значение в объекте класса Optional, можно путём вызова метода isPresent(), который возвращает true, если значение не null.
Метод ifPresent() позволяет выполнять заданный код в том случае, если value не null. Сигнатура метода — ifPresent(Consumer<? super T> consumer). Например :
Optional<String> opt = Optional.of("somestring");
opt.ifPresent(name -> System.out.println(name.length()));