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

问题描述 投票:2回答:3

我不是指返回一个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 lambda optional
3个回答
5
投票

看起来像Java-9中的ifPresentOrElse用例:

obj.ifPresentOrElse(a -> {...}, () -> {logger.info(xxxx);return; });

2
投票

如果你想在Optional为空时什么也不做,你可以使用ifPresent

public void someMethod() {
    someService.getObj().ifPresent (v -> {
         ....
    });   
}

0
投票

只是抛出一个想法,如何在服务上有一个方法来检查对象是否存在?我认为通常你不想在你的代码中传播你的Optionals,我宁愿将它保留在服务中。

SomeService

public boolean isObjectPresent() {
    return getObj().isPresent();
}

然后

public void someMethod() {
    if (someService.isObjectPresent()) {
         ....
    } else {
       log.info(xxxx);
       return;
    }
}

这样你就不必在你的电话中处理Optional,因为你并不真正关心它的价值

注意:另外,我补充一点,如果if块之后没有代码,则不需要return语句。

© www.soinside.com 2019 - 2024. All rights reserved.