Chr*_*311 5 refactoring optional java-8
public ValueA map(ValueB valueB, Date date) {
Optional<ValueC> valueCOpt = find(valueB);
if (valueCOpt.isPresent()) {
ValueC valueC = valueCOpt.get();
// call many getters on valueC and do a lot of logic with it.
return map(/*some parameters*/);
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
这看起来很难看.期权的优势在这里完全消失了.我读到应该使用map或flatMap代替get.但如果我更换每个吸气剂,这真的是一个好处
valueC.getFieldA()
Run Code Online (Sandbox Code Playgroud)
同
valueCOpt.map(ValueC::getFieldA)
Run Code Online (Sandbox Code Playgroud)
你知道一些常见的或最好的做法吗?
您可以使用
public ValueA map(ValueB valueB, Date date) {
return find(valueB)
.map(valueC -> {
// call many getters on valueC and do a lot of logic with it.
return map(/*some parameters*/);
})
.orElse(null);
}
Run Code Online (Sandbox Code Playgroud)
关键点是只计算映射函数,如果可选项不为空,否则结果保持为空可选.如果可选项为空,orElse(null)则返回null.
| 归档时间: |
|
| 查看次数: |
2396 次 |
| 最近记录: |