我有以下流:
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 回答
问题是:我在空对象上使用了
.isEmpty()
. 我不得不使用StringUtils.isEmpty()
方法: