可以使 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());
是否可以使 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());