Zhr*_*hro 8 java lambda optional java-8
为了避免调用get()哪个可以抛出异常:
if (a.isPresent())
list.add(a.get());
Run Code Online (Sandbox Code Playgroud)
我可以用以下代码替换此表达式
a.ifPresent(list::add);
Run Code Online (Sandbox Code Playgroud)
但是如果我需要执行更大的表达式,例如:
if (a.isPresent() && b && c)
list.add(a.get());
Run Code Online (Sandbox Code Playgroud)
是否仍然可以使用lambda表单来缓解对此的调用get()?
我的用例是尽可能避免get()在可能的情况下避免错过可能未经检查的异常.
Jac*_* G. 12
我的假设是你必须分别对待其他人boolean,但我可能是错的.
if (b && c) {
a.ifPresent(list::add);
}
Run Code Online (Sandbox Code Playgroud)
实际上,一个奇怪的解决方案可能是:
a.filter(o -> b && c).ifPresent(list::add);
Run Code Online (Sandbox Code Playgroud)
注意
在以前的答案中添加一个变体:
a.ifPresent(obj -> { if (b && c) list.add(obj); });
Run Code Online (Sandbox Code Playgroud)
如果a存在.检查然后添加未包装的对象
| 归档时间: |
|
| 查看次数: |
339 次 |
| 最近记录: |