pau*_*aul 0 groovy java-8 java-stream
I\xc2\xb4m 使用 Stream 并findFirst()返回Optional,但也有 \xc2\xb4s 有可能我的StreamMaybe 不会发出任何东西,所以我添加了orElse在底部添加了运算符。
问题是orElse不返回可选值,而是返回可选值的类类型findFirst。
def optional = categories.categories.stream()\n .filter { category -> category.name == selCategory }\n .map { category -> loadUniqueIds.call(category) }\n .map { UUIDs -> new JsonArray(UUIDs) }\n .findFirst().orElse{Optional.of(new JsonArray())}\n optional.get()\nRun Code Online (Sandbox Code Playgroud)\n所以我最终无法使用findFirst并且orElse。
我\xc2\xb4m在这里做错了什么?
\n谢谢
\n更新:
\n我最终删除了orElse之后findFirst并稍后检查可选的
optional.isPresent() ? optional.get(): new JsonArray()\nRun Code Online (Sandbox Code Playgroud)\n无论如何,如果有人有更好/优雅的解决方案,请告诉我。
\n问候。
\n如果你使用findFirst()你会得到一个Optional,但是如果你使用orElse()(这是Optional的方法)你会得到未包装的对象,因为你无法Optional再得到一个。要么获取findFirst()unwrapped中找到的内容,要么获取 中的“默认”值orElse()。
从 中返回一个可选值是没有意义的orElse(),因为它总是保证存在。
Optional.of("foo").orElse("bar"); // Returns String "foo"
Optional.empty().orElse("bar"); // Returns String "bar"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6626 次 |
| 最近记录: |