Sha*_*her 7 java optional java-8
我必须在两个String变量之间进行选择 - 第一个具有非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;
Run Code Online (Sandbox Code Playgroud)
它也可以用简短的形式完成:
String target = value1 != null ? value1 : value2 != null ? value2 : null;
if (target == null) return null;
Run Code Online (Sandbox Code Playgroud)
我正在努力学习如何以流畅的形式使用Optional
注意:我只能使用Java 8语法(所以没有Optional.or())
如果你只有两个选择,你可以这样做:
target = Optional.ofNullable(value1)
.orElseGet(() -> Optional.ofNullable(value2).orElse(null));
Run Code Online (Sandbox Code Playgroud)
即使这可以用于两个以上的变量。
使用 java-9,这可以变得更具可读性:
target = Optional.ofNullable(value1)
.or(() -> Optional.ofNullable(value2))
.orElse(null);
Run Code Online (Sandbox Code Playgroud)
确实,另一个答案有一个很好的观点;因此,这可以进一步简化为根本不使用Optionals,仍然是一行:
target = value1 != null ? value1 : value2;
Run Code Online (Sandbox Code Playgroud)
String target = Optional.ofNullable(value1).orElse(value2)
Run Code Online (Sandbox Code Playgroud)
如果value1 == null,则返回value2- 具有值或为null.没有必要value2 == null通过将其映射到null 来显式处理这种情况.
| 归档时间: |
|
| 查看次数: |
1077 次 |
| 最近记录: |