2016-09-23 2 views
0

私は、次の流れがあります。JavaのストリームフィルタNULLポインタの問題

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

service.typeは文字列であり、かつtypeも文字列です。フィルタは、typeがnull(または単に空白)または指定された型のサービスをすべて返します。

これは私のエラースロー:

のjava.lang.NullPointerException: com.eternity.service.OrderService.lambda $ getServicesForOrder $ 0(OrderService.java:140) 〜[クラスではnullを/ :na] java.util.stream.ReferencePipeline $ 2 $ 1.accept(ReferencePipeline.java:174) 〜[na:1.8.0_77] at java.util.ArrayList $ ArrayListSpliterator.forEachRemaining(ArrayList.java:1374) 〜[na:1.8.0_77] at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) 〜[なし:1.8.0_7 7] 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] at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) 〜[na:1.8.0_77] at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java) :499) 〜[NA:1.8.0_77] com.eternity.service.OrderService.getServicesForOrder(OrderService.java:141) 〜[クラス/:NA]で

私は何をしないのですか?

+0

デバッグしようとしましたか?公平にラムダ式で試したことはありません。 – AxelH

答えて

2

問題は次のとおりです。nullオブジェクトに.isEmtpy()を使用していました。私はStringUltis.isEmpty(メソッドを使用しなければならなかった)

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