【发布时间】:2018-10-11 09:39:01
【问题描述】:
我必须在两个字符串变量之间进行选择——第一个没有null 值。
如果它们都是null - 那么我想退出该方法。
这可以在以下代码中完成:
String value1 = <get from somewhere>
String value2 = <get from somewhere else>
String target = null;
if (value1 != null) target = value1;
else if (value2 != null) target = value2;
if (target == null) return null;
也可以简写:
String target = value1 != null ? value1 : value2 != null ? value2 : null;
if (target == null) return null;
我正在努力使用Optional以流利的形式做到这一点
注意:我只能使用 Java 8 语法(所以没有Optional.or())
【问题讨论】:
-
您使用三元运算符的版本与使用
if块的版本不同。在第一个版本中,value2似乎优先于value1当两者都不为空时。 -
在重复链接中搜索
Optional,得到30+票的答案。 -
@ernest_k。你是对的,更正
-
Stream.of(first, second).filter(Objects::nonNull).findFirst()我猜... -
@Eugene 如果你这么认为,你绝对应该投票重新开放,而且你不需要征求我的同意:-)