如何将多层Optional.isPresent判断转换为Optional.flatMap实现?
使用Optional.flatMap简化多层判断
你可以直接通过flatMap串联两个Optional操作,替代嵌套的isPresent判断,简化后的代码如下:
private Optional<Commit> getCommit1(String id, Integer number) { return repository.findById(id, number) .flatMap(revision -> commitRepository.findById(revision.getCommitId())); }
逻辑说明:
repository.findById(id, number)返回Optional<Revision>,若该Optional为空,flatMap会直接返回Optional.empty()- 若Optional存在有效Revision对象,
flatMap会执行传入的lambda表达式:以revision.getCommitId()为参数调用commitRepository.findById(),该方法返回的Optional<Commit>会被flatMap直接作为最终返回值,无需额外空判断
内容的提问来源于stack exchange,提问作者Puneri Pagadi
相关产品推荐
相关产品推荐

