我有以下流:
services = services.stream()
.filter(service -> (service.getType().isEmpty() || service.getType().equals(type)))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
其中service.type是字符串,type也是字符串。我的过滤器应返回所有服务,其type等于 null(或只是空白)或给定类型。
这给我一个错误:
java.lang.NullPointerException: 在 com.eternity.service.OrderService.lambda$getServicesForOrder$0(OrderService.java:140) ~[classes/: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]
我错过了什么?
问题是:我.isEmpty()在一个空对象上使用。我不得不使用StringUtils.isEmpty()方法:
services = services.stream()
.filter(service -> (StringUtils.isEmpty(service.getType()) || service.getType().equals(type)))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11541 次 |
| 最近记录: |