基于可选值调用void方法时如何使用Optional的map和orElseGet方法

我有一个我正在使用的 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 可选技术优化这段代码的建议将不胜感激。

回答

使用orElseGet(other),因此如果该值存在,则不会执行构建器表达式。

Optional<Forms> formsOptional = input.data().get().forms();

Forms forms = formsOptional.orElseGet(() -> Forms.builder().names(myList).build());

this.doSomething(myValue, forms);

您通常会将其作为先前方法链的一部分来执行,如果需要,您可以将其拆分为多行以进行澄清:

Forms forms = input.data()
                   .get()
                   .forms()
                   .orElseGet(() -> Forms.builder().names(myList).build());

this.doSomething(myValue, forms);


以上是基于可选值调用void方法时如何使用Optional的map和orElseGet方法的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>