我的意思不是返回一个 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中有什么办法做到这一点吗?我不需要此方法返回任何值,但如果Optable不存在,我想记录一些东西。
4 回答
慕尼黑的夜晚无繁华
TA贡献1864条经验 获得超6个赞
似乎是Java-9中的用例:ifPresentOrElse
obj.ifPresentOrElse(a -> {...}, () -> {logger.info(xxxx);return; });
米脂
TA贡献1836条经验 获得超3个赞
如果不想在 空时不执行任何操作,可以使用 :OptionalifPresent
public void someMethod() {
someService.getObj().ifPresent (v -> {
....
});
}
红糖糍粑
TA贡献1815条经验 获得超6个赞
只是抛出一个想法,在服务上有一个方法来检查对象是否存在呢?我认为通常你不想将 Optionals 分散到整个代码中,我宁愿将其保留在服务中。
上:SomeService
public boolean isObjectPresent() {
return getObj().isPresent();
}
然后
public void someMethod() {
if (someService.isObjectPresent()) {
....
} else {
log.info(xxxx);
return;
}
}
这样,您就不必在通话中处理,因为您并不真正关心它的价值Optional
注意:另外,我还要补充一点,如果在 if 块之后没有代码,则不需要 return 语句。
添加回答
举报
0/150
提交
取消