编写 Java 8 可选对象

假设我的代码中有以下 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();

}

...


汪汪一只猫
浏览 90回答 2
2回答

阿波罗的战车

这里:Optional<Integer>&nbsp;a&nbsp;=&nbsp;Optional.of(1); Optional<Integer>&nbsp;b&nbsp;=&nbsp;Optional.of(1); Optional<Integer>&nbsp;c&nbsp;=&nbsp;Optional.of(1);问题是:当您声明这样的“独立”变量时,您也必须“独立”地处理它们(编写代码!)。换句话说:要么使用诸如Stream.of()or 之类的东西Arrays.asList(a, b, c)进行进一步处理;或者只是在创建时直接将这些“常量”放入列表/数组中。因为只有这样你才能转向流逻辑,正如 Luis 的评论中所概述的那样。

BIG阳

您可以从所有这些创建流并执行减少操作:Stream.of(a,&nbsp;b,&nbsp;c) &nbsp;&nbsp;&nbsp;&nbsp;.filter(Optional::isPresent) &nbsp;&nbsp;&nbsp;&nbsp;.map(Optional::get) &nbsp;&nbsp;&nbsp;&nbsp;.mapToInt(Integer::intValue) &nbsp;&nbsp;&nbsp;&nbsp;.sum();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java