首页 文章

Java流过滤器空指针问题

提问于
浏览
0

我有以下流:

services = services.stream()
        .filter(service -> (service.getType().isEmpty() || service.getType().equals(type)))
        .collect(Collectors.toList());

其中 service.type 是字符串, type 也是字符串 . 我的过滤器应返回所有服务,其 type 等于null(或只是空白)或给定类型 .

这引发了我的错误:

java.lang.NullPointerException:null at com.eternity.service.OrderService.lambda $ getServicesForOrder $ 0(OrderService.java:140)〜[classes /:na] at java.util.stream.ReferencePipeline $ 2 $ 1.accept(ReferencePipeline . java:174.~ [na:1.8.0_77] java.util.ArrayList $ ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)〜[na:1.8.0_77] at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline . java:481)〜[na:1.8.0_77] java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)〜[na:1.8.0_77] at java.util.stream.ReduceOps $ ReduceOp.evaluateSequential(在java.util.stream.ReferencePipeline.collect的java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)〜[na:1.8.0_77]中的ReduceOps.java:708)~ [na:1.8.0_77]( com.ternity.service.OrderService.getServicesForOrder(OrderService.java:141)〜[classes /:na]中的ReferencePipeline.java:499)~ [na:1.8.0_77]

我错过了什么?

1 回答

  • 3

    问题是:我在空对象上使用了 .isEmpty() . 我不得不使用 StringUtils.isEmpty() 方法:

    services = services.stream()
            .filter(service -> (StringUtils.isEmpty(service.getType()) || service.getType().equals(type)))
            .collect(Collectors.toList());
    

相关问题