转载

java – 可以在较大的表达式中使用可选的ifPresent()来缓解对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(),以防止错过可能的未经检查的异常.

我的假设是你必须单独对待其他布尔值,但我可能是错的.

if (b && c) {
    a.ifPresent(list::add);
}

实际上,一个奇怪的解决方案可能是:

a.filter(o -> b && c).ifPresent(list::add);

注意

>请务必查看shinjw的解决方案 here 以获得第三个示例!

翻译自:https://stackoverflow.com/questions/46782731/can-optional-ifpresent-be-used-in-a-larger-expression-to-mitigate-a-call-to-ge

原文  https://codeday.me/bug/20190113/522941.html
正文到此结束
Loading...