减少代码行和使用可选的最佳方法

时间:2018-09-26 12:42:31

标签: java

    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吗?

请提出建议

1 个答案:

答案 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);

此解决方案的主要优点是减少了一种静态方法,从而使垃圾收集变得容易。