ハンメルフェスト:
我々はすべて、我々は特定のアイテムを取得したいと思い、そこからSomeType項目のリストを持っているアイテム(フィルター)にチェックを実行し、基準が満たされた場合に、その項目(マップ)から、特定の文字列型のフィールドを取得します一つの式で
次のように、当該メソッド・インターフェースです。すべては、私たちがフィルタ結果をマッピングしたい最後のステップまでの罰金を行っているOptional<SomeType>
にOptional<String>
。残念ながら、私たちは、マップの呼び出しによって期待される構文を爪することができません
public Optional<String> transform(final List<SomeType> aList)
return getAnItemFromTheList(aList)
.filter(someFilterClass::anItemFulfillsCriteria)
.map(???use getAStringTypeFieldFromTheItem() here???);
private Optional<SomeType> getAnItemFromTheList(final List<SomeType> aList) {...
public boolean anItemFulfillsCriteria(final SomeType anItem) {... //in a separate class of filter methods
private Optional<String> getAStringTypeFieldFromTheItem(final SomeType anItem) {...
ユージン:
私はそれを正しく理解まあ場合にはgetAStringTypeFieldFromTheItem
戻りますOptional<String>
ので、あなたがで終わるだろう、Optional<Optional<String>>
後map
。これだけの使用flatMap
の代わりに、map
それを得るためにOptional<String>
、結果として、