试图重构我的整个项目。
我是否希望通过可选的Java 8空检查来简化此块,如果最后可能是相同的结果?谢谢
List<EntityDto> ventolinLogs = new ArrayList<>();
for (VentolinLog logs : ventolinLogsList) {
for (String ventolinId : logs.getVentolinIds()) {
Ventolin ventolin = persistence.get(Ventolin.class, ventolinId);
String ventolinName= "";
String ventolinFirstName= "";
if (ventolin != null) {
ventolinName= ventolin.getVentolinName();
ventolinFirstName= ventolin.getFirstName();
}
VentolinProfile ventolinProfile = persistence.get(VentolinProfile.class, ventolinId);
String ventolinProfileName= "";
if (ventolinProfile != null) {
ventolinProfileName= ventolinProfile.getName();
}
EntityDto LogDto = EntityDto.builder()
.ventolinId(ventolinId)
.ventolinName(ventolinName)
.ventolinFirstName(ventolinFirstName)
.ventolin
ventolinLogs.add(LogDto);
}
}
最佳答案
如果您可以从Persistence类返回一个可选参数,或者像示例中那样仅创建一个可选参数,则可以执行以下操作:
ventolinProfileName = Optional.ofNullable(ventolinProfile).map(VentolinProfile::getName).orElse(ventolinProfileName); // or just "" in the last brackets
我还将提取生成器到变量并将其传递给lambda:
EntityDtoBuilder builder = EntityDto.builder();
Optional.ofNullable(ventolin).ifPresent(vp-> builder.ventolinName(vp.getVentolinName())
.ventolinFirstName(vp.getFirstName()))
但是您应该注意默认值,这些默认值在代码中被初始化为空字符串