什么是惯用的&#34;功能性&#34;获取可选<string>的方法并返回默认字符串(如果为null或空),否则返回修改后的字符串?

时间:2018-02-12 09:30:26

标签: java functional-programming coding-style optional

采用Optional<String>并说出

的惯用,最小(可能是功能性的)方法是什么?
  • 如果为null或为空,则返回默认字符串例如 true,或
  • 返回修改后的字符串,例如 query_str = <str>

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

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

但是我的同事们写的周围代码似乎使用了很多,我认为可能会被称为&#34;功能性&#34;风格链。例如,

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

SORTORDERBY orderBy = orderByMaybe.orElse(DEFAULT_ORDER_BY);

所以,我试图尽可能地符合他们的风格,streamfilterorElse等不确定是不是因为我来自C ++背景,或者因为我的学习很简单,但这对我来说还是很陌生。

1 个答案:

答案 0 :(得分:5)

这是否符合您的要求?

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