假設我的代碼中有以下 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);
問題是:當您聲明這樣的“獨立”變量時,您也必須“獨立”地處理它們(編寫代碼?。?/p>
換句話說:要么使用諸如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
提交
取消