给出代码:
Optional<String> myOptional = getMyOptional();
myOptional.ifPresentOrElse(
s -> Optional.ofNullable(someMap.get(s))
.ifPresentOrElse(g -> {
doSomeStuff();
},
() -> doErrHandling()),
() -> doErrHandling());
现在我正在考虑如何简化链并删除重复的代码行(() -> doErrHandling()
)。
答案 0 :(得分:6)
使用map
:
Optional<String> myOptional = getMyOptional() ;
myOptional.map(s -> someMap.get(s))
.ifPresentOrElse(g -> doSomeStuff(), () -> doErrHandling());
map
将在原始Optional.empty()
为空的情况下返回Optional
,否则将someMap.get(s)
的结果与Optional
包装在一起。