【发布时间】:2017-10-17 04:55:44
【问题描述】:
为避免调用可能引发异常的get():
if (a.isPresent())
list.add(a.get());
我可以将这个表达式替换为:
a.ifPresent(list::add);
但是如果我需要执行更大的表达式,例如:
if (a.isPresent() && b && c)
list.add(a.get());
是否仍然可以为此使用 lambda 形式来减轻对 get() 的调用?
我的用例是在可能的情况下完全避免get(),以防止错过可能的未经检查的异常。
【问题讨论】:
-
我相信another answer 在短路方面执行的顺序与问题的顺序完全相同,而不是目前接受的顺序......并且短路确实会影响执行多个布尔运算时的处理。
-
我们可以更新问题以包含
if (b && a.isPresent() && c) list.add(a.get());以使其更有趣吗?
标签: java lambda java-8 optional