如何避免使用Optional.get和Optional.isPresent
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;
}
这看起来很丑。可选选项的优点在这里完全消失了。我读到应该使用map
或flatMap
代替get
。但是,如果我更换每个吸气剂,真的有好处吗?
valueC.getFieldA()
与
valueCOpt.map(ValueC::getFieldA)
您知道这里的一些常见或最佳做法吗?
回答:
您可以使用
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);
}
关键是仅在可选函数不为空时才评估映射函数,否则结果将保留为空。如果可选为空,orElse(null)
将返回null
。
以上是 如何避免使用Optional.get和Optional.isPresent 的全部内容, 来源链接: utcz.com/qa/422728.html