假设我有一个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()方法可用,那将达到我的目的。
是的,可以使用我不希望使用的命令式代码来编写此代码。所以我的问题是,是否可以实现PresentThrow()或以一种更好的方式以函数样式进行操作是一样的事情。预先感谢。