gpt4 book ai didi

java - 如果存在 Optional<> 则抛出异常

转载 作者:IT老高 更新时间:2023-10-28 20:49:42 26 4
gpt4 key购买 nike

假设我想查看一个对象是否存在于流中,如果不存在,则抛出异常。我可以做到这一点的一种方法是使用 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 行为?尝试以这种方式 throw 是一种不好的做法吗?

最佳答案

如果您的过滤器发现任何内容,您可以使用 ifPresent() 调用引发异常:

    values.stream()
.filter("two"::equals)
.findAny()
.ifPresent(s -> {
throw new RuntimeException("found");
});

关于java - 如果存在 Optional<> 则抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28596790/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com