我想使用 java8 Optional
替换以下代码:
public Obj getObjectFromDB() {
Obj obj = dao.find();
if (obj != null) {
obj.setAvailable(true);
} else {
logger.fatal("Object not available");
}
return obj;
}
以下伪代码不起作用,因为没有 orElseRun
方法,但无论如何它说明了我的目的:
public Optional<Obj> getObjectFromDB() {
Optional<Obj> obj = dao.find();
return obj.ifPresent(obj.setAvailable(true)).orElseRun(logger.fatal("Object not available"));
}
原文由 membersound 发布,翻译遵循 CC BY-SA 4.0 许可协议
对于 Java 9 或更高版本,
ifPresentOrElse
很可能是您想要的:使用 vavr 或类似方法进行柯里化可能会得到更整洁的代码,但我还没有尝试过。