首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组成Java 8可选组件

组成Java 8可选组件
EN

Stack Overflow用户
提问于 2019-07-23 22:50:24
回答 2查看 103关注 0票数 1

假设我的代码中有以下可选参数:

代码语言:javascript
复制
Optional<Integer> a = Optional.of(1);
Optional<Integer> b = Optional.of(1);
Optional<Integer> c = Optional.of(1);

如果它们(abc)都存在,我需要实现一些逻辑。我如何才能以一种优雅的方式做到这一点?

我需要这样做(举个例子):

代码语言:javascript
复制
...
if (a.isPresent() && b.isPresent() && c.isPresent()) {
    return a.get() + b.get() + c.get();
}
...
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-23 22:59:26

这里:

代码语言:javascript
复制
Optional<Integer> a = Optional.of(1);
Optional<Integer> b = Optional.of(1);
Optional<Integer> c = Optional.of(1);

问题是:当你像那样声明“独立”变量时,你必须处理它们(编写代码!)“独立”也是如此。

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

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

票数 3
EN

Stack Overflow用户

发布于 2019-07-23 22:59:34

您可以从所有这些内容创建流,并执行reduce操作:

代码语言:javascript
复制
Stream.of(a, b, c)
    .filter(Optional::isPresent)
    .map(Optional::get)
    .mapToInt(Integer::intValue)
    .sum();
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57166830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档