[英]Can Optional ifPresent() be used in a larger expression to mitigate a call to get()?
为了避免调用可以抛出异常的get()
:
if (a.isPresent())
list.add(a.get());
我可以用以下代码替换此表达式
a.ifPresent(list::add);
但是如果我需要执行更大的表达式,例如:
if (a.isPresent() && b && c)
list.add(a.get());
是否仍然可以使用lambda表单来缓解对get()
的调用?
我的用例是尽可能避免get()
,以防止错过可能的未经检查的异常。
我的假设是你必须单独处理其他boolean
,但我可能是错的。
if (b && c) {
a.ifPresent(list::add);
}
实际上,一个奇怪的解决方案可能是:
a.filter(o -> b && c).ifPresent(list::add);
注意
在以前的答案中添加一个变体:
a.ifPresent(obj -> { if (b && c) list.add(obj); });
如果a存在。 检查然后添加未包装的对象
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.