这两种方法有什么区别: Optional.flatMap()
和 Optional.map()
?
一个例子将不胜感激。
原文由 codependent 发布,翻译遵循 CC BY-SA 4.0 许可协议
这两种方法有什么区别: Optional.flatMap()
和 Optional.map()
?
一个例子将不胜感激。
原文由 codependent 发布,翻译遵循 CC BY-SA 4.0 许可协议
他们都从可选的类型中获取一个函数。
map()
将功能“ 按原样”应用到您拥有的选项上:
if (optional.isEmpty()) return Optional.empty();
else return Optional.of(f(optional.get()));
如果您的函数是来自 T -> Optional<U>
的函数,会发生什么情况?
您的结果现在是 Optional<Optional<U>>
!
That’s what flatMap()
is about: if your function already returns an Optional
, flatMap()
is a bit smarter and doesn’t double wrap it, returning Optional<U>
。
它是两个功能习语的组合: map
和 flatten
。
原文由 Diego Martinoia 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
使用
map
如果函数返回您需要的对象或flatMap
如果函数返回Optional
。例如:两个打印语句都打印相同的内容。