如果存在可选<>,则引发异常
假设我想查看流中是否存在某个对象,如果它不存在,则引发异常。我可以做到这一点的一种方法是使用该方法:orElseThrow
List<String> values = new ArrayList<>();
values.add("one");
//values.add("two"); // exception thrown
values.add("three");
String two = values.stream()
.filter(s -> s.equals("two"))
.findAny()
.orElseThrow(() -> new RuntimeException("not found"));
反过来呢?如果我想在找到任何匹配项时引发异常:
String two = values.stream()
.filter(s -> s.equals("two"))
.findAny()
.ifPresentThrow(() -> new RuntimeException("not found"));
我可以只存储 ,并在以下之后进行检查:Optional
isPresent
Optional<String> two = values.stream()
.filter(s -> s.equals("two"))
.findAny();
if (two.isPresent()) {
throw new RuntimeException("not found");
}
有没有办法实现这种行为?试图以这种方式投掷是一种不好的做法吗?ifPresentThrow