CompletableFuture<Void>
と宣言され、結果のコレクションなどを返さない理由は、CompletableFuture.allOf
ですか? CompletableFuture.anyOf
返信CompletableFuture<Object>
を作成することをお勧めしますが、これらの2つの方法が接続されていることがわかります。返される内容については混乱しています。CompletableFuture.allOfがCompletableFutureとして宣言されているのはなぜですか?<Void>?
6
A
答えて
5
anyOf
は、何らかの理由で、完了がanyOf
をトリガーした特定のCompletableFuture
の結果であったことを伝えなければなりません。 allOf
の場合は、どの先物が完了したか知っているので、これは必要ではありません。
allOf
(ちょうどanyOf
と同じ)は、すべての先物が同じタイプである必要はありません。コレクションの将来を返すのであれば、おそらくあなたが望むものではないかもしれないObject
のコレクションでなければならないでしょう。
あなたが本当にコレクションの未来を返すallOf
持つようにしたい場合は、それはあなた自身を書くことは非常に簡単です:
public static CompletableFuture<List<Object>> myAllOf(CompletableFuture<?>... futures) {
return CompletableFuture.allOf(futures)
.thenApply(x -> Arrays.stream(futures)
.map(f -> (Object) f.join())
.collect(toList())
);
}
あなたはこの問題のタイプセーフなバージョンを持っているとのコレクションを変換する必要がある場合いくつかの例については、この質問を参照してください。List<Future> to Future<List> sequence
+0
あなたの説明をお寄せいただきありがとうございますが、とにかく 'allOf'がCompletableFutureのストリームを返すことができない理由や結果、または他の理由を理解できません... – Everv0id
関連する問題
- 1. なぜGADBannerViewが宣言されていないのですか?
- 2. なぜ 'EINTR'が宣言されていないのですか?
- 3. argv []がconstとして宣言されているのはなぜですか? ARGV [] CONSTとして宣言された理由のObjective-Cでは、
- 4. SBTプロジェクトがなぜレイジー・ヴァルとして宣言されていますか?
- 5. なぜclangは_Imaginary_Iが宣言されていないのですか?
- 6. `std`モジュールが宣言されていないのはなぜですか?
- 7. なぜCompletableFutureのthenAccept()がメインスレッドで実行されていない
- 8. .NETで戻り値の型が構造体として宣言されているのはなぜですか?
- 9. なぜこの変数が宣言されていないのですか?
- 10. なぜこのエラー 'init_task'が宣言されていないのですか?
- 11. なぜWebMethodがStaticとして宣言されたのですか?
- 12. Javaで別のファイルで宣言されているのはなぜですか?
- 13. エクスターナル・テンプレート:宣言が宣言されていないもの
- 14. HttpServletクラスが抽象クラスとして宣言されているのはなぜですか?
- 15. aspxコードビハインドファイルが部分クラスとして宣言されているのはなぜですか?
- 16. プロトタイプで宣言されている関数が呼び出されないのはなぜですか?
- 17. C++エラーはクラスが宣言されていないと言っています
- 18. 「厳格な」(JavaScript)が宣言されていない変数を検出しないのはなぜですか?
- 19. なぜ、 'main'の前に '宣言指定子が期待されている'と言うのですか?
- 20. なぜ '宣言'は 'T &&'ではなく、 'add_rvalue_reference <T> :: type'で指定されていますか?
- 21. 同じクラスでメソッドが定義されていると、宣言されていない識別子 'downloadDataFromURL'が使用されるのはなぜですか?
- 22. マップとしてクラス名を宣言できないのはなぜですか?
- 23. Javaでクラスが静的であると宣言されているのはなぜですか?
- 24. オブジェクトstd :: vectorが宣言されていても使用されていないときにコンパイラが警告を出さないのはなぜですか?
- 25. UITableViewは宣言されていない型のセルですか?
- 26. なぜデフォルトでは、varibaleはcでstaticとして宣言されていますか?
- 27. JavaのObjectクラスでwait()とnotify()が宣言されているのはなぜですか?
- 28. なぜこのスレッドは決して宣言されたり開始されたりしないのですか?
- 29. なぜGKPlayerAuthenticationDidChangeNotificationName「宣言されていない識別子」
- 30. 「宣言されていない識別子を使用していますか?」というエラーが表示されるのはなぜですか?
これは、呼び出し元が決して問い合わせをしなくても、事前に 'List'を作成する必要があります。 – Holger