【问题标题】:Java filter NullPointerJava 过滤器空指针
【发布时间】:2021-11-08 13:02:22
【问题描述】:

尝试创建过滤器,需要选择类型不等于“N”的记录。我尝试通过这种方式做到这一点,但我得到了 NullPointer。我认为这是因为在我的数据库中Type 有时为空。如何修复此过滤器以不获取 NullPointer?

Collection<Plan> plan = packet.getPlan().stream() //    
            .filter(item -> !item.getType().equals("N")) //
            .map(packetPlan -> Plan.newInstance( //
                    packetPlan, //
                    activePlan.contains(packetPlan.getType()))) //
            .collect(Collectors.toList());

【问题讨论】:

  • "我认为这是因为在我的数据库中类型有时为空。" - 正确。 “如何修复此过滤器以不获取 NullPointer” - 在获取类型之前,在您的 filter() 中添加对 null 的检查。
  • 在获取类型之前,您是否尝试过检查对象是否不为空?
  • 如果我需要选择那些Type null 或不等于“N”的记录怎么办?然后添加此检查对我不利。

标签: java nullpointerexception null-pointer


【解决方案1】:

只需添加另一个过滤器

Collection<Plan> plan = packet.getPlan().stream() //    
            .filter(item -> item != null) //
            .filter(item -> !item.getType().equals("N")) //
            .map(packetPlan -> Plan.newInstance( //
                    packetPlan, //
                    activePlan.contains(packetPlan.getType()))) //
            .collect(Collectors.toList())

【讨论】:

  • 或者:filter(Objects::nonNull)
  • 如果我需要选择那些Type null 或不等于“N”的记录怎么办?然后添加此检查对我不利。
  • 你的过滤器说你没有。您的过滤器说 t 不能为空。无论如何,这取决于您如何过滤您的信息流。
猜你喜欢
  • 2017-01-31
  • 2020-06-01
  • 2013-10-29
  • 1970-01-01
  • 2018-07-16
  • 1970-01-01
  • 1970-01-01
  • 2011-01-17
  • 2011-12-21
相关资源
最近更新 更多