gpt4 book ai didi

java - 如何通过Optional或stream或lambda简化代码?

转载 作者:行者123 更新时间:2023-12-02 02:53:15 25 4
gpt4 key购买 nike

我有一些代码想要重构以简化它:

 public ObjectB doSomethingHere(ObjectA objectA, List<ObjectB> objectBList) {

boolean emptyObject = objectA == null;
boolean emptyList = CollectionUtils.isEmpty(objectBList);
if (emptyObject || emptyList) {
throw new SomeException("ERROR",
emptyObject ? null : objectA.getId(),
emptyList ? 0 : objectBList.size());
}

return objectBList
.stream()
.filter(p -> doSomeStuff(p,objectA))
.min(Comparator.comparingInt(ObjectB::getSort))
.orElse(null);

}

返回部分是逻辑在 boolean 表达式不为 true 时应该执行的操作(错误处理)。

我猜这可以“一次性”处理,例如:

Optional.ofNullable(xxx ).orElseThrow(yyyy);

实现这一目标的最佳方法是什么?

最佳答案

我认为您使用 Optional 并不会真正添加任何内容,因为您实际上只是检查该值是否为空。所以我建议:

if (objectA == null || objectBList.isEmpty())

您的流操作可以是:

return objectBList.stream()
.filter(...)
.min(...).orElse(null);

关于java - 如何通过Optional或stream或lambda简化代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57094539/

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