Создание контейнера из значения в Java
Статический метод Optional.of оборачивает уже
известное непустое значение. Если передать null,
сразу вылетит NullPointerException - так
компилятор и библиотека напоминают: внутри должно
лежать реальное значение.
Для переменной, которая сама может быть null,
берут Optional.ofNullable: при null
получится пустой контейнер, иначе - такой же, как
после of:
import java.util.Optional;
Optional<String> fromText = Optional.of("draft");
String maybe = null;
Optional<String> fromNullable = Optional.ofNullable(maybe);
System.out.println(fromText.isPresent());
System.out.println(fromNullable.isEmpty());
Правило на практике простое: литерал или только что
проверенное значение - of; поле или аргумент
метода с возможным null - ofNullable.
Метод поиска часто заканчивается так:
import java.util.Optional;
Optional<String> nick(String raw) {
if (raw == null || raw.isBlank()) {
return Optional.empty();
}
return Optional.of(raw.trim());
}
Напишите метод Optional<Integer> parseQty(String text):
для null и пустой строки верните пустой
контейнер, иначе Optional.of(Integer.parseInt(text)).
Выведите isPresent для "12" и для
null.