Проверка наличия значения в Java
Перед извлечением удобно спросить контейнер, пустой он
или нет. Метод isPresent дает true,
если значение есть, isEmpty - обратный ответ.
Оба появились в разных версиях Java; смысл один.
Классическая проверка в условии:
import java.util.Optional;
Optional<String> tag = Optional.of("java");
if (tag.isPresent()) {
System.out.println(tag.get());
}
Optional<String> missing = Optional.empty();
System.out.println(missing.isEmpty());
Метод ifPresent принимает Consumer и
вызывает его только при непустом контейнере. Так не
нужен явный if с get:
import java.util.Optional;
Optional<String> tag = Optional.of("java");
tag.ifPresent(value -> System.out.println(value.length()));
Пара ifPresentOrElse добавляет вторую лямбду
на случай пустоты: одна ветка для значения, другая
для отсутствия.
Дан пустой контейнер с именем. Выведите имя,
если оно есть, или "guest", если
контейнер пуст.