假设我的代码中有以下 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 的评论中所概述的那样。
BIG阳
TA贡献1859条经验 获得超6个赞
您可以从所有这些创建流并执行减少操作:
Stream.of(a, b, c) .filter(Optional::isPresent) .map(Optional::get) .mapToInt(Integer::intValue) .sum();
添加回答
举报
0/150
提交
取消