如果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);
答案 0 :(得分:0)
我无法想象在任何情况下这都是一个好主意。如果 是个好主意,那么您的第一个代码段似乎是绝对最佳的方法。
但是,如果对您而言,将其作为单个语句来做非常重要,则可以编写:
return optionalTest.map(s -> true).orElseThrow(TestException::new);
使用Optional.map(...)将您的Optional<String>
转换为不存在的Optional<Boolean>
或保留值Boolean.TRUE
的{{1}}。