可以使 Optional 的这种用法更具功能性吗

Can this usage of Optional be made more functional

是否可以使 Optional 的这种用法更具功能,即将对 isEmpty() 的调用替换为处理 null 情况的可选方法之一?

public Iterable<User> getOrganisationUsers(final String organisationId) {

  Optional<Organisation> org = organisationRepository.findById(organisationId);

  if (org.isEmpty()) {
    return Collections.emptyList();
  }
  return org.get().getUsers();
}

参见

您可以使用Optional#orElse方法。

在你的情况下,它将是:

return organisationRepository.findById(organisationId).map(org->org.getUsers()).orElse(Collections.emptyList());

您的代码的更多功能版本:

return organisationRepository.findById(organisationId)
        .map(Organisation::getUsers)
        .orElseGet(Collections::emptyList);

尝试

return org.map(Organisation::getUsers).orElse(Collections.emptyList());