我想重构一些代码以简化它:
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);
}
返回部分是在布尔表达式不为真(错误处理)的情况下逻辑应该做什么。
我猜这可以用“一枪”来解决,就像这样:
Optional.ofNullable(xxx ).orElseThrow(yyyy);
达到这个目标的最佳方法是什么?
答案 0 :(得分:0)
我不认为您使用Optional
确实会增加任何内容,因为您实际上只是在检查该值是否为null。所以我建议:
if (objectA == null || objectBList.isEmpty())
您的流操作可以是:
return objectBList.stream()
.filter(...)
.min(...).orElse(null);