gpt4 book ai didi

java - 使用 Optional wrapper 对多个条件进行 OR

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:52:54 24 4
gpt4 key购买 nike

我正在尝试理解和使用 Java 8 - 可选功能。我想重构这个代码块。没有 Optional 我有这样的条件。

ClassA objA = findObject();
if(objA == null || objA.isDeleted()){
throw Exception("Object is not found.");
}

我想使用 Optional wrapper 来转换这个 block 。我读过有关过滤器、ifPresent 函数的信息,但我找不到方法。也许这很简单,但我是 Java 8 的新手。如果你能提供帮助,我将不胜感激。

最佳答案

你不应该使用 Optional<T>单独替换 if声明,因为它没有更好,也不会为您带来任何好处。一个更好的解决方案是制作 findObject()方法返回 Optional<ClassA> .

这使得此方法的调用者决定在“无值”情况下要做什么。

假设您已进行此更改,然后您可以利用 Optional<T>输入:

findObject().filter(a -> !a.isDeleted())  // if not deleted then do something 
.map(...) // do some mapping maybe?
... // do some additional logic
.orElseThrow(() -> new Exception("Object is not found."));//if object not found then throw exception

参见 Optional<T> 类以熟悉 API 和可用的方法。

关于java - 使用 Optional wrapper 对多个条件进行 OR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50070597/

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