在Java 8中执行以下操作是否有更漂亮的方法,避免使用isPresent
和get
?
void doStuff(String someValue, Optional<Boolean> doIt) {
if (doIt.isPresent()) {
if (doIt.get()) {
trueMethod(someValue);
} else {
falseMethod(someValue);
}
}
}
我尝试使用map
,但没有成功。但我可能没有那么努力?
答案 0 :(得分:6)
您可以使用ifPresent
代替isPresent
和get
:
void doStuff(String someValue, Optional<Boolean> doIt) {
doIt.ifPresent (b -> {
if (b)
trueMethod(someValue);
else
falseMethod(someValue);
});
}
编辑:修复了我的代码,因为如果trueMethod
和falseMethod
没有返回任何内容,则无法使用三元运算符。
答案 1 :(得分:1)
这将是使用map
:
Function<Boolean, Void> logic = isTrue -> {
if (isTrue) trueMethod(someValue);
else falseMethod(someValue);
return null;
};
doIt.map(logic);
然而,非常丑陋,主要是因为你的“功能不强”trueMethod
/ falseMethod
,它们都返回void
(领先对丑陋的return null
)。