所以我正在使用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