如果为null或空,则采用Optional <String>并返回默认字符串的惯用"功能"方法是什么,否则是修改后的字符串?

And*_*ong 1 java functional-programming coding-style optional

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

  • 返回默认字符串,例如, true如果为null或空,或
  • 返回修改后的字符串,例如 query_str = <str>否则.

当然,这是我笨重的尝试:

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

但是我的同事们编写的周围代码似乎使用了很多,我认为可能被称为"功能"样式链接.例如,

String externalTraffickedStateClauses = StringUtils.defaultIfBlank(
    externalTraffickedStateQueries.stream().collect(Collectors.joining(" OR ")), "false");
Run Code Online (Sandbox Code Playgroud)

SORTORDERBY orderBy = orderByMaybe.orElse(DEFAULT_ORDER_BY);
Run Code Online (Sandbox Code Playgroud)

所以,我想,以符合自己的风格,就像我能,stream,filter,orElse等不知道这是因为我从C++背景的还是因为我的学习收获是已经过时,但是这仍然是很对我不熟悉

Cru*_*mmy 5

这会做你想要的吗?

return queryMaybe
    .filter(query -> !query.isEmpty())
    .map(query -> "query_str = " + query)
    .orElse("true")
Run Code Online (Sandbox Code Playgroud)