optional(customerVO.getGender()).ifPresent(customer -> {
if (!customer.equals("-1")) {
mstCustomer.setGender(customer);
}
});
public static Optional<String> optional(String value) {
return StringUtils.isNotBlank(value) ? Optional.of(value) : Optional.empty();
}
以上代码运行正常。唯一的事情是如何减少上面的代码。可以使用JDK 1.8吗?
请提出建议
答案 0 :(得分:3)
仅使用lambda的第一种情况可能不太干净:
Predicate<String> notMinusOne = Predicate.isEqual("-1").negate();
Optional.ofNullable(customerVO.getGender())
.filter(notMinusOne)
.ifPresent(mstCustomer::setGender);
在第二种情况下,您可以使用过滤器:
public static Optional<String> optional(String value) {
return Optional.ofNullable(value).filter(StringUtils::isNotBlank);
}
以及合并结果:
Predicate<String> notMinusOne = Predicate.isEqual("-1").negate();
Optional.ofNullable(customerVO.getGender())
.filter(StringUtils::isNotBlank)
.filter(notMinusOne)
.ifPresent(mstCustomer::setGender);
此解决方案的主要优点是减少了一种静态方法,从而使垃圾收集变得容易。