采用Optional<String>
并说出
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);
所以,我试图尽可能地符合他们的风格,即链stream
,filter
,orElse
等不确定是不是因为我来自C ++背景,或者因为我的学习很简单,但这对我来说还是很陌生。
答案 0 :(得分:5)
这是否符合您的要求?
return queryMaybe
.filter(query -> !query.isEmpty())
.map(query -> "query_str = " + query)
.orElse("true")