基于可选值调用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);
THE END
二维码