是否可以在更大的表达式中使用可选的 ifPresent() 来减轻对 get() 的调用?

2024-04-24

为了避免打电话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);

NOTE

  • 请务必查看 Shinjw 的解决方案here https://stackoverflow.com/a/46782957/7294647第三个例子!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在更大的表达式中使用可选的 ifPresent() 来减轻对 get() 的调用? 的相关文章

随机推荐