如何避免使用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;

}

这看起来很丑。可选选项的优点在这里完全消失了。我读到应该使用mapflatMap代替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

回到顶部