这个问题在这里已经有答案了:
在现有Java7代码中使用Java8可选(4个答案)
在Java8可选管道中展平元素列表(2个答案)
Java8可选和flatmap-怎么了(1个答案)
java 8-optional.flatmap和optional.map之间的区别(6个答案)
上个月关门了。
我有以下代码,它按预期工作:
Optional.ofNullable(testItem.getId())
.map(testItemRepository::get)
.orElseThrow(() -> new TestException(ReturnCode.UNKNOWN_ID))
.orElseThrow(() -> new TestException(ReturnCode.UNKNOWN_ID));
我想知道是否有一种方法,只是有一个部分或做它少冗余?
2条答案
按热度按时间omtl5h9j1#
似乎是这样的
testItemRepository::get
返回另一个Optional<Something>
. 在这种情况下,你不应该使用map
. 使用map
会给你一个嵌套的可选-Optional<Optional<Something>>
正如你所发现的,与之共事并不好。flatMap
正是针对这种情况:jdzmm42g2#
使用
Optional#flatMap
方法,只要该方法的调用testItemRepositoryget
结果Optional
.i、 e.从
Optional<Optional<MyObject>>
至Optional<MyObect>
.