JAVA8可选,以返回布尔值或引发异常

时间:2019-06-09 04:03:36

标签: java-8

如果true非空,我想返回optionalTest,否则抛出异常。

这可行,但是我认为有更好的方法:

if(optionalTest.isPresent()) {
    return true;
} else {
    throw new TestException();
}

我尝试使用三元表达式,但无法编译:

return optionalTest.isPresent() ? true : throw new TestException();

我也尝试使用orElseThrow,但最终得到的是字符串而不是true

return optionalTest.orElseThrow(TestException::new);

1 个答案:

答案 0 :(得分:0)

我无法想象在任何情况下这都是一个好主意。如果 是个好主意,那么您的第一个代码段似乎是绝对最佳的方法。

但是,如果对您而言,将其作为单个语句来做非常重要,则可以编写:

return optionalTest.map(s -> true).orElseThrow(TestException::new);

使用Optional.map(...)将您的Optional<String>转换为不存在的Optional<Boolean>或保留值Boolean.TRUE的{​​{1}}。