You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中如何处理NullPointerException?过滤在线客户列表时空指针如何解决

空指针异常解决方案

问题根因

异常提示已经明确说明:调用String.equals(Object)方法时,getTypeofcustomer()的返回值为null,空对象没有equals方法,因此触发空指针异常。

修复方案

你可以选择以下任意一种空安全的写法修复filter逻辑:

  • 方案1:将字符串常量放在equals前面,利用常量非空的特性避免空指针
    把filter内的判断改为:
    .filter(i -> "ONLINE_CUSTOMER".equals(i.getTypeofcustomer()))
    
  • 方案2:使用JDK提供的Objects.equals空安全比较工具
    先导入java.util.Objects,再修改判断逻辑:
    .filter(i -> Objects.equals(i.getTypeofcustomer(), "ONLINE_CUSTOMER"))
    
  • 方案3:增加前置非空校验,先过滤掉字段为null的记录
    .filter(i -> i.getTypeofcustomer() != null && i.getTypeofcustomer().equals("ONLINE_CUSTOMER"))
    
  • 方案4(治本方案):如果业务规则要求客户类型字段不允许为空,可以在数据源层面增加非空约束,比如数据库字段设为NOT NULL、实体类字段增加非空校验注解,从根源避免空值产生。

额外代码优化建议

你现有代码中if (getproducts.size() > 0)的判断可以直接删除,Stream API对空列表的处理会直接返回空集合,不需要单独分支处理,简化后代码如下:

public List<Productnames> getproductpurchasedlist() {
    List<Productnames> getproducts = stockProductService.getproducts();
    return getproducts.stream()
            .filter(i -> Objects.equals(i.getTypeofcustomer(), "ONLINE_CUSTOMER"))
            .collect(Collectors.toList());
}

内容的提问来源于stack exchange,提问作者welcome_java

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 19:24:03