为了账号安全,请及时绑定邮箱和手机立即绑定

编写 Java 8 可选对象

编写 Java 8 可选对象

汪汪一只猫 2023-04-13 16:51:38
假设我的代码中有以下 Optionals:Optional<Integer> a = Optional.of(1);Optional<Integer> b = Optional.of(1);Optional<Integer> c = Optional.of(1);a如果它们全部 ( ,b和c) 都存在,我需要实现一些逻辑。我怎样才能优雅地做到这一点?我需要做这样的事情(例如):...if (a.isPresent() && b.isPresent() && c.isPresent()) {    return a.get() + b.get() + c.get();}...
查看完整描述

2 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

这里:

Optional<Integer> a = Optional.of(1);
Optional<Integer> b = Optional.of(1);
Optional<Integer> c = Optional.of(1);

问题是:当您声明这样的“独立”变量时,您也必须“独立”地处理它们(编写代码!)。

换句话说:要么使用诸如Stream.of()or 之类的东西Arrays.asList(a, b, c)进行进一步处理;或者只是在创建时直接将这些“常量”放入列表/数组中。

因为只有这样你才能转向流逻辑,正如 Luis 的评论中所概述的那样。


查看完整回答
反对 回复 2023-04-13
?
BIG阳

TA贡献1859条经验 获得超6个赞

您可以从所有这些创建流并执行减少操作:

Stream.of(a, b, c)
    .filter(Optional::isPresent)
    .map(Optional::get)
    .mapToInt(Integer::intValue)
    .sum();


查看完整回答
反对 回复 2023-04-13
  • 2 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信