避免在控制逻辑中使用isPresent()和get()

neu*_*242 5 java lambda functional-programming optional java-8

有没有更好的方法在Java 8中执行以下操作,避免isPresentget

void doStuff(String someValue, Optional<Boolean> doIt) {
    if (doIt.isPresent()) {
        if (doIt.get()) {
            trueMethod(someValue);
        } else {
            falseMethod(someValue);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试过使用map,没有成功.但我可能没有努力尝试?

Era*_*ran 6

您可以使用ifPresent而不是isPresentget:

void doStuff(String someValue, Optional<Boolean> doIt) {
    doIt.ifPresent (b -> {
                             if (b) 
                                 trueMethod(someValue);  
                             else
                                 falseMethod(someValue);
                         });
}
Run Code Online (Sandbox Code Playgroud)

编辑:固定我的代码,因为如果你不能使用三元运算trueMethodfalseMethod不返回任何东西.