目前我使用以下格式的this.route('posts')
值:
有没有办法进一步减少代码?
Optional
答案 0 :(得分:3)
首先,如果您已经使用null
,则应避免返回Optional
。相反,空Optional
应表示该元素缺失。
Optional::map
只会映射该值(如果存在)。
因此,而不是检查值isPresent
然后重新编译null
,
你可以简化这个
attributeValueList.flatMap(values -> values.stream().filter((attribute) -> StringUtils.equals(attribute.getFoo(), attributeV.getBar()).findFirst())
...
当您将其更改为
时,您也可以将其应用于第二次isPresent
检查
return value.map(x -> x.bar());
所有这些都可能看起来像这样(没有经过测试,因为我不知道这些课程):
return Optional.<Product>of(product)
.map(Product::getServiceAttributes)
.map(ServiceAttributeMap::getMap)
.map((v) -> (ServiceAttribute) v.get(attributeV.getAttributeString()))
.map(c::getValueList)
.flatMap(values -> values
.stream()
.filter((attribute) -> StringUtils.equals(attribute.getFoo(), attributeV.getBar()))
.findFirst())
.map(x -> x.bar());
这样做的积极作用是,当其中一个步骤没有返回任何内容时,您的函数返回空Optional
。所有其他步骤都将被忽略。