假設(shè)我的代碼中有以下 Optionals:Optional<Integer> a = Optional.of(1);Optional<Integer> b = Optional.of(1);Optional<Integer> c = Optional.of(1);a如果它們?nèi)?( ,b和c) 都存在,我需要實(shí)現(xiàn)一些邏輯。我怎樣才能優(yōu)雅地做到這一點(diǎn)?我需要做這樣的事情(例如):...if (a.isPresent() && b.isPresent() && c.isPresent()) { return a.get() + b.get() + c.get();}...
2 回答

阿波羅的戰(zhàn)車
TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊
這里:
Optional<Integer> a = Optional.of(1); Optional<Integer> b = Optional.of(1); Optional<Integer> c = Optional.of(1);
問題是:當(dāng)您聲明這樣的“獨(dú)立”變量時(shí),您也必須“獨(dú)立”地處理它們(編寫代碼?。?/p>
換句話說:要么使用諸如Stream.of()
or 之類的東西Arrays.asList(a, b, c)
進(jìn)行進(jìn)一步處理;或者只是在創(chuàng)建時(shí)直接將這些“常量”放入列表/數(shù)組中。
因?yàn)橹挥羞@樣你才能轉(zhuǎn)向流邏輯,正如 Luis 的評(píng)論中所概述的那樣。

BIG陽
TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以從所有這些創(chuàng)建流并執(zhí)行減少操作:
Stream.of(a, b, c) .filter(Optional::isPresent) .map(Optional::get) .mapToInt(Integer::intValue) .sum();
添加回答
舉報(bào)
0/150
提交
取消