在Java 8中,转换Optional.empty中空String的Optional
给定一个String我需要获得一个Optional,如果String为null或为空,则结果为Optional.empty。 我可以这样做:
String ppo = ""; Optional ostr = Optional.ofNullable(ppo); if (ostr.isPresent() && ostr.get().isEmpty()) { ostr = Optional.empty(); }
但肯定必须有更优雅的方式。
您可以使用filter:
Optional ostr = Optional.ofNullable(ppo).filter(s -> !s.isEmpty());
如果ppo
为null或为空,那将返回一个空的Optional。
使用Apache Commons:
.filter(StringUtils::isNotEmpty)
怎么样:
Optional ostr = ppo == null || ppo.isEmpty() ? Optional.empty() : Optional.of(ppo);
当然,如果你经常需要它,你可以把它放在一个实用工具方法中。 我认为使用空字符串创建Optional
没有任何好处,只能忽略它。
你可以使用map:
String ppo=""; Optional ostr = Optional.ofNullable(ppo) .map(s -> s.isEmpty()?null:s); System.out.println(ostr.isPresent()); // prints false
如果你使用番石榴,你可以这样做:
Optional ostr = Optional.ofNullable(Strings.emptyToNull(ppo));