Given the code:
Optional<String> myOptional = getMyOptional();
myOptional.ifPresentOrElse(
s -> Optional.ofNullable(someMap.get(s))
.ifPresentOrElse(g -> {
doSomeStuff();
},
() -> doErrHandling()),
() -> doErrHandling());
Now I am thinking about how to simplify the chain and remove the duplicate code line (() -> doErrHandling()
).
Use map
:
Optional<String> myOptional = getMyOptional() ;
myOptional.map(s -> someMap.get(s))
.ifPresentOrElse(g -> doSomeStuff(), () -> doErrHandling());
map
will return an Optional.empty()
if the original Optional
is empty, and will wrap the result of someMap.get(s)
with an Optional
otherwise.