什么是惯用的 "functional" 方式来获取 Optional<String> 和 return 如果为 null 或空则为默认字符串,否则为修改后的字符串?

What is the idiomatic "functional" way to take an Optional<String> and return a default string if null or empty, a modified string otherwise?

什么是惯用的、最小的(也许是功能性的?)方式来采用 Optional<String> 并说,

当然还有我笨拙的尝试:

Optional<String> queryMaybe; // Given.
String clause = "true";
if (queryMaybe.isPresent() && !queryMaybe.get().isEmpty()) {
  clause = "query_str = " + queryMaybe.get();
}

但是我的同事编写的周边代码似乎使用了很多我认为可能称为 "functional" 风格的链接。例如,

String externalTraffickedStateClauses = StringUtils.defaultIfBlank(
    externalTraffickedStateQueries.stream().collect(Collectors.joining(" OR ")), "false");

SORTORDERBY orderBy = orderByMaybe.orElse(DEFAULT_ORDER_BY);

所以,我尽可能地符合他们的风格,streamfilterorElse, 等等。不知道是因为我是 C++ 出身,还是因为我的知识已经过时了,但这对我来说还是很陌生。

这是否符合您的要求?

return queryMaybe
    .filter(query -> !query.isEmpty())
    .map(query -> "query_str = " + query)
    .orElse("true")