【发布时间】:2019-04-16 15:44:39
【问题描述】:
我使用Lombok-Builder 从entity 对象构建我的api java 对象
RewardApi.builder()
.rewardId(rewardEntity.getrewardId())
.rewardTitle(rewardEntity.getrewardTitle())
.rewardText(rewardEntity.getrewardText())
.rewardFor(rewardEntity.getrewardFor())
.rewardType(rewardEntity.getrewardType())
.rewardFromDate(rewardEntity.getrewardFromDate().toZonedDateTime())
.rewardToDate(rewardEntity.getrewardToDate().toZonedDateTime())
.isDisplayOn(rewardEntity.getIsDisplayOn())
.createdId(rewardEntity.getCreatedId())
.updatedId(rewardEntity.getUpdatedId())
.createdDate(rewardEntity.getCreatedDate().toZonedDateTime())
.lastModifiedDate(rewardEntity.getLastModifiedDate().toZonedDateTime())
.build();
我在设置lastModifiedDate 字段时得到nullPointerException,因为entity 对象将该字段作为null 并在null 之上执行toZonedDateTime()
如何在没有传统方式(如下所述)的情况下解决这个问题
if (null!=rewardEntity.getLastModifiedDate(){....}
我想在使用builder-pattern 设置变量时检查null,而不是在构建对象后进行null 检查。有什么办法吗?
【问题讨论】:
-
使用三元运算符
-
rewardEntity.getLastModifiedDate() != null? rewardEntity.getLastModifiedDate().toZonedDateTime() : null我猜 -
您是否可以灵活地使用 java 8,如果可以,那么我建议将其包装在类似于
Optional.ofNullable(rewardEntity.getLastModifiedDate()).map(z->z.toZonedDateTime()).orElse(null);的可选中 -
@foxt7ot 我会说是的,给定标签。
-
@AndyTurner 呵呵!!完全错过了:(