为了账号安全,请及时绑定邮箱和手机立即绑定

Java 8 如果不存在 Optional,如何从方法返回?

Java 8 如果不存在 Optional,如何从方法返回?

呼啦一阵风 2022-09-07 18:01:44
我的意思不是返回一个 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; });


查看完整回答
反对 回复 2022-09-07
?
米脂

TA贡献1836条经验 获得超3个赞

如果不想在 空时不执行任何操作,可以使用 :OptionalifPresent


public void someMethod() {

    someService.getObj().ifPresent (v -> {

         ....

    });   

}



查看完整回答
反对 回复 2022-09-07
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

Use Optional.ofNullable(input).orElseGet(this::methodName);

如果输入为 null,则转到 orElseGet 逻辑。如果输入不为空,则返回输入值。

请参阅 https://www.baeldung.com/java-optional 的“orElse 和 orElseGet()之间的区别”部分


查看完整回答
反对 回复 2022-09-07
?
红糖糍粑

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 语句。


查看完整回答
反对 回复 2022-09-07
  • 4 回答
  • 0 关注
  • 155 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信