所以我正在使用Optionals并遇到了一个奇怪的行为.我想知道这是否真的是一个强大的"功能"或什么...奇...
下面是给出的示例:我有一个带有Optional的方法,其中orElse我想评估另一个可选项.如果其他Optional不存在,我将引发IllegalArgumentException:
firstOptionalVar.orElse(secondOptionalVar.orElseThrow(IllegalArgumentException::new));
Run Code Online (Sandbox Code Playgroud)
现在,如果它secondOptionalVar是一个空的Optional,它将引发IllegalArgumentException,即使它firstOptionalVar是Present.这对我来说似乎不对.如果firstOptionalVar不存在,我希望它只会引发IllegalArgumentException .
用java7方法来解决这种行为并不是什么大问题:
firstOptionalVar.isPresent() ? firstOptionalVar.get() : secondOptionalVar.orElseThrow(IllegalArgumentException::new);
Run Code Online (Sandbox Code Playgroud)
有没有其他人以前经历过这种行为?这真的是选项应该表现的方式吗?