may*_*ran 1 java if-statement optional java-8
我有一个我正在使用的 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());
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下, 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);
Run Code Online (Sandbox Code Playgroud)
您通常会将其作为先前方法链的一部分来执行,如果需要,您可以将其拆分为多行以进行澄清:
Forms forms = input.data()
.get()
.forms()
.orElseGet(() -> Forms.builder().names(myList).build());
this.doSomething(myValue, forms);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |