当前位置: 首页 > 知识库问答 >
问题:

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

萧献
2023-03-14

为了避免调用可能引发异常的get()

if (a.isPresent())
   list.add(a.get());

我可以将此表达式替换为:

a.ifPresent(list::add);

但是如果我需要执行一个更大的表达式,比如:

if (a.isPresent() && b && c)
   list.add(a.get());

是否仍然可以使用lambda表单来缓解对get()的调用?

我的用例是尽可能完全避免get(),以防止错过可能的未检查异常。

共有2个答案

佟颖逸
2023-03-14

在前面的答案中增加一个变化:

a.ifPresent(obj -> { if (b && c) list.add(obj); });

如果存在。选中,然后添加展开的对象

壤驷高洁
2023-03-14

我的假设是,您必须分别对待其他的< code>boolean,但我可能是错的。

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

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

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

  • 请务必在此处查看shinjw的解决方案以获取第三个示例!
 类似资料:
  • 一般格式为: 只有分隔符是必需的 以下是有效字符串: 我真的很难想出一个正则表达式来验证可选部分,同时保持整个字符串的完整性。 你怎么写这个正则表达式? PS:这需要是一个正则表达式,因为它将是不接受任何其他内容的第三方lexer的一部分。 相关岗位: 正则表达式验证带有可选小数部分的逗号分隔数字 与有效日期输入的每个阶段匹配的日期的正则表达式

  • 问题内容: 我正在尝试验证一个没有多余字符的(美国)电话号码。因此格式为1-555-555-5555,没有破折号,空格等,并且1是可选的。但是,我的正则表达式仅会排除前导数字为1的数字,并说没有该数字的数字将无效。这是我在使用的地方,我哪里出错了? 问题答案: 用: ?表示“可选”。

  • 本文向大家介绍我们可以在JSP中使用XPath表达式的switch语句吗?,包括了我们可以在JSP中使用XPath表达式的switch语句吗?的使用技巧和注意事项,需要的朋友参考一下 在<X:选择>标签的运作方式类似于Java的switch语句。有了这个,您可以在多种选择之间进行选择。如果switch语句具有case语句,则<x:choose>标记具有<x:when>标记。以类似的方式,switc

  • 问题内容: 所以…例如,我正在尝试将一个电子邮件“模板”引入iframe中,作为angularjs应用程序内用户的“预览”。iframe位于控制器区域内(我们称其为MainCtrl)。然后,用户将能够使用MainCtrl内提供的表单元素基于其输入来更新预览。举例来说,假设我们将模板拉入iframe的过程如下所示: 因此,在我们的index.html(angularjs应用)中,我们将具有绑定到{{

  • 我看到一段让我难以理解的代码,将其简化并放在这里: 模型类被定义为具有公共方法: 我的问题是: 对于

  • 我知道Optionals ifPresent()调用的目的是替换空检查。从Oracle文档中提取代码示例,它在简单情况下似乎非常有用。例如: 我只是想了解为什么这被认为比空检查更好。可读性?表演在我看来,这会对项目性能造成影响,因为必须引入一个新的对象才能容纳我们最终希望获得的对象?总之,为什么这是 如果(声卡!=null),则认为比这更好。