我有一个java可选变量,如下所示。
Optional<Forms> formsOptional = input.data().get().forms();
if(formsOptional.isPresent()) {
this.doSomething(myValue, forms.get());
} else {
this.doSomething(myValue, Forms.builder().names(myList).build());
}
在这种情况下,dosomething方法是一种无效的方法。由于这是一个void方法,我对如何使用map().orelseget()感到困惑,因为我也没有任何东西要转换。任何使用java8可选技术优化这段代码的建议都将不胜感激。
2条答案
按热度按时间xurqigkl1#
使用
orElseGet(other)
,因此如果存在值,则不会执行生成器表达式。通常,您可以将其作为上一个方法链的一部分来执行,如果需要,您可以将其拆分为多行,以便澄清:
lxkprmvk2#
您已经有了最好的java-8版本,但是如果您使用的是java-9或更高版本,那么您可以使用
ifPresentOrElse
```formsOptional.ifPresentOrElse(val -> doSomething(myValue, val),
() -> doSomething(myValue, Forms.builder().names(myList).build()));