我不是指返回一个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不存在,我想记录一些东西。
看起来像Java-9中的ifPresentOrElse
用例:
obj.ifPresentOrElse(a -> {...}, () -> {logger.info(xxxx);return; });
如果你想在Optional
为空时什么也不做,你可以使用ifPresent
:
public void someMethod() {
someService.getObj().ifPresent (v -> {
....
});
}
只是抛出一个想法,如何在服务上有一个方法来检查对象是否存在?我认为通常你不想在你的代码中传播你的Optionals,我宁愿将它保留在服务中。
在SomeService
:
public boolean isObjectPresent() {
return getObj().isPresent();
}
然后
public void someMethod() {
if (someService.isObjectPresent()) {
....
} else {
log.info(xxxx);
return;
}
}
这样你就不必在你的电话中处理Optional
,因为你并不真正关心它的价值
注意:另外,我补充一点,如果if块之后没有代码,则不需要return语句。