作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我想用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/
我是一名优秀的程序员,十分优秀!