所以我正在使用Optionals並遇到了一個奇怪的行爲。我想知道這是否真的是一個intendet「功能」或其他...奇怪...orElse分支拋出的可選異常
這裏給出的例子: 我有一個方法,其中orElse我想要評估其他可選。如果其他可選是不存在的,我會養一個IllegalArgumentException:
firstOptionalVar.orElse(secondOptionalVar.orElseThrow(IllegalArgumentException::new));
現在,如果是空可選,它會引發一個IllegalArgumentException,即使firstOptionalVar
是存在的。這對我來說並不合適。如果firstOptionalVar
不存在,我希望它會引發IllegalArgumentException。
這不是什麼大不了的事得到角落找尋這種行爲與java7的方法,如:
firstOptionalVar.isPresent() ? firstOptionalVar.get() : secondOptionalVar.orElseThrow(IllegalArgumentException::new);
有沒有其他人經歷過這種行爲?這是否真的是可選方式應該表現的方式?
'flatMap'不幸的是相反。 – biziclop
可以在鏈接問題或答案中找到例外情況。請注意,您要執行的「或」操作將在Java 9上提供:http://stackoverflow.com/questions/24599996/get-value-from-one-optional-or-another – Tunaki
謝謝您的回答。 @resueman的解決方案將爲我工作,但很高興知道java9將如何處理這種情況:) – Numbernick