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

我的意思不是返回一个 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不存在,我想记录一些东西。


呼啦一阵风
浏览 228回答 4
4回答

慕尼黑的夜晚无繁华

似乎是Java-9中的用例:ifPresentOrElseobj.ifPresentOrElse(a&nbsp;->&nbsp;{...},&nbsp;()&nbsp;->&nbsp;{logger.info(xxxx);return;&nbsp;});

米脂

如果不想在 空时不执行任何操作,可以使用 :OptionalifPresentpublic void someMethod() {&nbsp; &nbsp; someService.getObj().ifPresent (v -> {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;....&nbsp; &nbsp; });&nbsp; &nbsp;}

江户川乱折腾

Use Optional.ofNullable(input).orElseGet(this::methodName);如果输入为 null,则转到 orElseGet 逻辑。如果输入不为空,则返回输入值。请参阅 https://www.baeldung.com/java-optional 的“orElse 和 orElseGet()之间的区别”部分

红糖糍粑

只是抛出一个想法,在服务上有一个方法来检查对象是否存在呢?我认为通常你不想将 Optionals 分散到整个代码中,我宁愿将其保留在服务中。上:SomeServicepublic boolean isObjectPresent() {&nbsp; &nbsp; return getObj().isPresent();}然后public void someMethod() {&nbsp; &nbsp; if (someService.isObjectPresent()) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;....&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp;log.info(xxxx);&nbsp; &nbsp; &nbsp; &nbsp;return;&nbsp; &nbsp; }}这样,您就不必在通话中处理,因为您并不真正关心它的价值Optional注意:另外,我还要补充一点,如果在 if 块之后没有代码,则不需要 return 语句。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java