我的意思不是返回一个Optional值,我的意思是说一个方法:
public void someMethod() {
Optional<Obj> obj = someService.getObj();
if (obj.isPresent()) {
....
} else {
log.info(xxxx);
return;
}
xxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxx
other codes
}
是否可以使用Optional.ifPresent方式编写它?我的意思是,避免使用if isPresent。
非常感谢。
==更新:
似乎JDK9中的PresentOrElse可以做到这一点,但是JAVA8中有什么方法可以做到这一点?
我不需要此方法返回任何值,但是如果Optional不存在,我想记录一些内容。
答案 0 :(得分:5)
就像Java-9中ifPresentOrElse
的用例一样:
obj.ifPresentOrElse(a -> {...}, () -> {logger.info(xxxx);return; });
答案 1 :(得分:2)
如果在Optional
为空时不执行任何操作,可以使用ifPresent
:
public void someMethod() {
someService.getObj().ifPresent (v -> {
....
});
}
答案 2 :(得分:0)
只需提出一个想法,在服务上使用一种方法来检查对象是否存在呢? 我认为通常您不希望将Optionals扩展到整个代码中,我希望将其保留在服务中。
在SomeService
上:
public boolean isObjectPresent() {
return getObj().isPresent();
}
然后
public void someMethod() {
if (someService.isObjectPresent()) {
....
} else {
log.info(xxxx);
return;
}
}
这样,您不必真正关心它的价值,而不必在通话中处理Optional
注意:另外,我要补充一点,如果在if块之后没有代码,则不需要return语句。