3 回答
TA贡献1786条经验 获得超13个赞
所有的都Object.isNull可能被替换为Optional对象及其方法。让我们以该行为例:
if (!Objects.isNull(excess.getLimit()) && Objects.isNull(excess.getLimit().getId())) {
mandatoryExcessFields.append(MANDATORY_EXCESS_FIELDS[3]);
}
将简化为(并压缩在 1 行上仍然可读):
Optional.ofNullable(excess.getLimit()) // check the Limit
.map(limit -> limit.getId()) // if not null, getId
.ifPresent(i -> builder.append(MANDATORY_EXCESS_FIELDS[3])); // Append if present
对于String.isEmpty(s)支票,您必须以Optional这种方式创建:
Optional.ofNullable(excess.getStatus()).filter(s -> !StringUtils.isEmpty(s))
一种简短的方法是将这些Optional对象传递到地图中并使用索引来遍历它们并执行操作。int count是多项检查:
Map<Integer, Optional<?>> map = new HashMap<>();
map.put(...);
map.put(1, Optional.ofNullable(excess.getStatus()).filter(s -> !StringUtils.isEmpty(s)));
map.put(...);
map.put(3, Optional.ofNullable(excess.getLimit()).map(limit -> limit.getId()));
map.put(...);
for (int index=0; index<count; index++) {
map.get(index).ifPresent(any -> mandatoryExcessFields.append(MANDATORY_EXCESS_FIELDS[index]));
}
而且 for-cycle 也可以简化:
IntStream.range(0, count).forEach(index ->
map.get(index)
.ifPresent(any -> mandatoryExcessFields.append(MANDATORY_EXCESS_FIELDS[index])));
TA贡献1877条经验 获得超1个赞
您可以使用javax.validator
,并hibernate.validator
与@NotNull
对每个字段(或任何字段,你想要的)你的注解excess
POJO类。这种组合还提供了广泛的模式检查。
通过这种方式,您不必显式执行所有 if 检查。您不仅可以使用空检查,还可以使用模式匹配检查,这些检查可能会分散在您的代码中。
添加回答
举报