我们有一个SomeType项列表,我们希望从中检索特定项,对该项进行检查(过滤器),如果满足条件,则从该项中检索特定的String type字段(图),一站式表达
有关的方法接口如下。一切顺利,直到最后一步,我们要将过滤结果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) {...
答案 0 :(得分:5)
如果我正确理解getAStringTypeFieldFromTheItem
将返回一个Optional<String>
,那么您将在Optional<Optional<String>>
之后得到map
;因此只需使用flatMap
而不是map
来获得Optional<String>
作为结果