为了避免调用可能引发异常的 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);
注意
- 确保查看 shinjw 的解决方案 here第三个例子!
关于java - Optional ifPresent() 可以用在更大的表达式中以减轻对 get() 的调用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46782731/