gariaable:
私はコレクションを使用したストリーム実装していますlistOfFooをバーインスタンスの値を取得するには、そのリスト内のすべての項目のIDを取得し、それらを使用します。
私は、このメソッドがスローになることを確実にしたいと思いますResourceNotFoundExceptionをバーのリストにはアイテムが存在しない場合には、リストバーがnullであり、それは空のリストが含まれているので、それは、ない場合は、現在の状態で、それはチェックしますが、。
あなたは助け私を喜ばといくつかのソリューションを提案してもらえますか?
List<Bar> bars = Optional.ofNullable(
listOfFoos.stream()
.map(Foo::getId)
.map(fooId -> service.getBars(fooId))
.filter(Objects::nonNull)
.collect(Collectors.toList()))
.orElseThrow(() -> new ResourceNotFoundException(Bar.class, OBJECT_NULL));
また:
ただ、追加Optional.filter
、それのために。:あなたは、としてそれを行うことができます
List<Bar> bars = Optional.ofNullable(
listOfFoos.stream().map(fooId -> service.getBars(fooId))
.filter(Objects::nonNull).collect(Collectors.toList()))
.filter(a -> !a.isEmpty())
.orElseThrow(() -> new ResourceNotFoundException(Bar.class, OBJECT_NULL));
脇:コード内で共有実装することにより、ストリームから返されたリストができなかったnull
ので、Optional.ofNullable
おそらく置き換えることができますOptional.of
。