をチェーンしたい場合Optional
は、そのmap(Function<? super T,? extends U> mapper)
メソッドを使用してマッパー関数を呼び出すことができます。そうでない場合にのみ、次のように最初の要素を取得するためにnull
使用できます。flatMap(Stream::findFirst)
Collection
Optional<List<ResultParameterClass>> parameters = Optional.ofNullable(response)
.map(ResponseClass::getBody)
.map(BodyClass::getRequestInformation)
.map(RequestInformationClass::getRequestParameters)
.map(Collection::stream)
.flatMap(Stream::findFirst)
.map(RequestParameterClass::getProductInstances)
.map(Collection::stream)
.flatMap(Stream::findFirst)
.map(ProductInstanceClass::getResultParameters);
に存在する場合はリストを返すか、存在しOptional
ない場合は new のようなものを返すこと
は可能ArrayList<ResultParameterClass>()
ですか?
そうです、デフォルト値を使用orElseGet(Supplier<? extends T> other)
または指定するだけで済みます。結果は ではなく.orElse(T other)
Optional
List<ResultParameterClass>
したがって、コードは次のようになります。
List<ResultParameterClass> parameters = Optional.ofNullable(response)
...
.map(ProductInstanceClass::getResultParameters)
.orElseGet(ArrayList::new);