假设我有一个 Spring Data Repository 方法。
Optional<Branch> findByName(@Nonnull final String name);
我的业务逻辑是这样的,如果我发现这个方法执行的任何值我会抛出一个异常。
例如,我可以这样做:
Optional.of(branchRepository.findByName(branch.getName()))
.filter(bo -> !bo.isPresent())
.orElseThrow(NameNotAvailableException::new);
或其他方式:
Optional.of(branchRepository.findByName(branch.getName()))
.filter(Optional::isEmpty)
.orElseThrow(NameNotAvailableException::new);
我不确定在这种情况下使用过滤器是否合适,因为我的方法返回Optional<Branch>
的不是列表。似乎如果在 JDK 中有 ifPresentThrow() 方法可用,这将符合我的目的。
是的,这段代码可以写成我不想要的命令式风格。所以我的问题是 ifPresentThrow() 可以实现同样的事情,或者有更好的方法来实现功能风格。提前致谢。