Ответ 1
Вы можете использовать фильтр:
Optional<String> ostr = Optional.ofNullable(ppo).filter(s -> !s.isEmpty());
Это вернет пустой Необязательный, если ppo
имеет значение null или пустое.
Учитывая строку, мне нужно получить опцию, в которой, если String имеет значение null или empty, результат будет необязательным. Я могу сделать это следующим образом:
String ppo = "";
Optional<String> ostr = Optional.ofNullable(ppo);
if (ostr.isPresent() && ostr.get().isEmpty()) {
ostr = Optional.empty();
}
Но, конечно, должен быть более элегантный способ.
Вы можете использовать фильтр:
Optional<String> ostr = Optional.ofNullable(ppo).filter(s -> !s.isEmpty());
Это вернет пустой Необязательный, если ppo
имеет значение null или пустое.
С Apache Commons:
.filter(StringUtils::isNotEmpty)
Как насчет:
Optional<String> ostr = ppo == null || ppo.isEmpty()
? Optional.empty()
: Optional.of(ppo);
Вы можете поместить это в полезный метод, если вам это нужно часто, конечно. Я не вижу никакой пользы в создании Optional
с пустой строкой, а затем игнорирую ее.
Вы можете использовать карту:
String ppo="";
Optional<String> ostr = Optional.ofNullable(ppo)
.map(s -> s.isEmpty()?null:s);
System.out.println(ostr.isPresent()); // prints false
Если вы используете Guava, вы можете просто сделать:
Optional<String> ostr = Optional.ofNullable(Strings.emptyToNull(ppo));