如果不存在,如何在Optional上执行逻辑? [英] How to execute logic on Optional if not present?
本文介绍了如果不存在,如何在Optional上执行逻辑?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想使用java8替换以下代码可选
:
I want to replace the following code using java8 Optional
:
public Obj getObjectFromDB() {
Obj obj = dao.find();
if (obj != null) {
obj.setAvailable(true);
} else {
logger.fatal("Object not available");
}
return obj;
}
以下伪代码不起作用,因为没有 orElseRun
方法,但无论如何它说明了我的目的:
The following pseudocode does not work as there is no orElseRun
method, but anyways it illustrates my purpose:
public Optional<Obj> getObjectFromDB() {
Optional<Obj> obj = dao.find();
return obj.ifPresent(obj.setAvailable(true)).orElseRun(logger.fatal("Object not available"));
}
推荐答案
我不认为你可以在一个声明中完成。更好:
I don't think you can do it in a single statement. Better do:
if (!obj.isPresent()) {
logger.fatal(...);
} else {
obj.get().setAvailable(true);
}
return obj;
这篇关于如果不存在,如何在Optional上执行逻辑?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文