首页 > 解决方案 > 如果条件为假,则返回 Null

问题描述

如果此函数的条件为假,我在返回空值时遇到问题:

private <Optional>ServiceElements getPrice(final ServiceRequest serviceRequest,
                                  final Date date,
                                  final Integer code) {
if (isNotAFilter(serviceRequest.getCustomerId(),
    serviceRequest.getStaffId()) {
  return custRepository.getCustData(date, code).stream().filter(e -> e.getPrice() != null).filter(e -> e.getPrice >=0)
    .findFirst();  
}
return null; 
}

private double calculate(final ServiceRequest serviceRequest) 
{
return getPrice(serviceRequest).get().getPrice(); 
}

java.lang.NullPointerException: null调用getPrice方法时抛出A而不是返回 null 值。

标签: javaooppmd

解决方案


if (isNotAFilter(serviceRequest.getCustomerId(),
    serviceRequest.getStaffId()) {
  price = custRepository.getCustData(date, code);
}

如果上述 if 条件评估为 false,则您的变量pricenull. 然后你的 return 语句抛出一个NullPointerException.


推荐阅读