【发布时间】:2017-01-31 22:25:32
【问题描述】:
我有以下流:
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) 〜[类/:na]在 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] 在 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] 在 java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[na:1.8.0_77] 在 java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:1.8.0_77] 在 java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) ~[na:1.8.0_77] 在 com.eternity.service.OrderService.getServicesForOrder(OrderService.java:141) ~[classes/:na]
我错过了什么?
【问题讨论】:
-
你尝试调试了吗?公平起见,从未尝试过使用 lambda 表达式。
标签: java java-stream