在Java 8中,转换Optional.empty中空String的Optional <String>

Ger*_*zas 42 java optional java-8

给定一个String我需要获得一个Optional,如果String为null或为空,则结果为Optional.empty.我可以这样做:

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

但肯定必须有一种更优雅的方式.

ass*_*ias 76

你可以使用一个过滤器:

Optional<String> ostr = Optional.ofNullable(ppo).filter(s -> !s.isEmpty());
Run Code Online (Sandbox Code Playgroud)

如果ppo为null或为空,那将返回一个空的Optional .


Fee*_*eco 16

使用Apache Commons:

.filter(StringUtils::isNotEmpty)
Run Code Online (Sandbox Code Playgroud)


Mic*_*ell 7

Java 11答案:

var optionalString = Optional.ofNullable(str).filter(Predicate.not(String::isBlank));
Run Code Online (Sandbox Code Playgroud)

String::isBlank 处理更广泛的“空”字符。