我想使用Optional
的流利api並將兩個Consumer
應用於它。如何偷看可選項?
我夢想着這樣的事:
Optional.ofNullable(key)
.map(Person::get)
.ifPresent(this::printName)
.ifPresent(this::printAddress); // not compiling, because ifPresent is void
如何申請幾個Consumer
s到一個Optional
,而無需將其存儲在一個臨時變量?
雖然這個作品,我不認爲使用'map'的副作用是好作風。就我個人而言,我寧願用'ifPresent(x - > {doA(x); doB(x);})' –
@RobinTopper人們有時會這樣做,因爲他們一直試圖自己找到他們問題的答案,但沒有找到一個,一旦他們找到了答案,他們想確保下一個搜索者找到答案。 – Esko
此外,這裏的原因是可選實際上是一個懶惰評估monad(_yes,在Java_中),並且只有在詢問最終值處理內部管道後 - 如果沒有值開始,默認行爲被調用,這可能會取決於用於獲得最終值的方法被調用。 – Esko