gpt4 book ai didi

java - 如果不存在,如何在 Optional 上执行逻辑?

转载 作者:IT老高 更新时间:2023-10-28 13:53:54 25 4
gpt4 key购买 nike

我想用java8替换下面的代码可选:

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"));
}

最佳答案

使用 Java 9 或更高版本,ifPresentOrElse很可能是您想要的:

Optional<> opt = dao.find();

opt.ifPresentOrElse(obj -> obj.setAvailable(true),
() -> logger.error("…"));

使用 vavr 进行柯里化(Currying)或类似的可能会得到更整洁的代码,但我还没有尝试过。

关于java - 如果不存在,如何在 Optional 上执行逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29235982/

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