如果此函数的条件为false,则返回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
调用时引发而不是返回null值 getPrice
方法。
2条答案
按热度按时间ujv3wf0j1#
如果上述if条件的计算结果为false,则变量
price
是null
. 然后你的返回语句抛出一个NullPointerException
.okxuctiv2#
为什么要考虑临时价格变量?
顺便说一句,既然您已经在使用java的函数结构,那么imo的理解应该是:
这意味着您可以更容易地用管道将此函数与其他函数连接起来,而无需到处进行难看的空检查。也
.orElse(null)
是一种更复杂的.get()
.