Подтвердить что ты не робот

В Java 8 преобразуйте Необязательный <String> пустой строки в Необязательный.

Учитывая строку, мне нужно получить опцию, в которой, если String имеет значение null или empty, результат будет необязательным. Я могу сделать это следующим образом:

String ppo = "";
Optional<String> ostr = Optional.ofNullable(ppo);
if (ostr.isPresent() && ostr.get().isEmpty()) {
    ostr = Optional.empty();
}

Но, конечно, должен быть более элегантный способ.

4b9b3361

Ответ 1

Вы можете использовать фильтр:

Optional<String> ostr = Optional.ofNullable(ppo).filter(s -> !s.isEmpty());

Это вернет пустой Необязательный, если ppo имеет значение null или пустое.

Ответ 2

С Apache Commons:

.filter(StringUtils::isNotEmpty)

Ответ 3

Как насчет:

Optional<String> ostr = ppo == null || ppo.isEmpty()
    ? Optional.empty()
    : Optional.of(ppo);

Вы можете поместить это в полезный метод, если вам это нужно часто, конечно. Я не вижу никакой пользы в создании Optional с пустой строкой, а затем игнорирую ее.

Ответ 4

Вы можете использовать карту:

String ppo="";
Optional<String> ostr = Optional.ofNullable(ppo)
                                .map(s -> s.isEmpty()?null:s);
System.out.println(ostr.isPresent()); // prints false

Ответ 5

Если вы используете Guava, вы можете просто сделать:

Optional<String> ostr = Optional.ofNullable(Strings.emptyToNull(ppo));