🎛️

【Java】CompletionStageのメソッド達を系統化してみる

2021/01/24に公開

仕事でCompletionStage を使う機会があったのですが、似たような名前のメソッドが多く混乱したので整理し、俯瞰的に眺めてみました。

系統図

系統図

各メソッドをワード毎にグルーピングして系統図っぽく図示してみました。
図の左から右に向かって、ワードを組み合わせてメソッド名が出来上がるイメージです。
また冒頭のワード毎に経路を分けてあります。

例えば、「●」->「accept」->「Either」->「◉」は「acceptEither」と読みます。
また、色が違う経路は通れないので、「●」->「accept」->「Both」とはなりません。

各ワードと意味

ワードの意味をまとめるとざっとこんな感じ。

ワード 意味
then 正常終了した
when 正常・異常問わず終了した
handle 実行結果もしくは例外を引数に関数を実行
exceptionally 例外を引数に関数を実行
accept 引数付きでアクションを実行
apply 引数付きで関数を実行
run 引数なしでアクションを実行
combine 自身と指定されたもう1つの実行結果を引数に関数を実行
compose 自身を引数に関数を実行
complete 実行結果もしくは例外を引数に関数を実行
Either 実行結果もしくは例外を引数に関数を実行
Both 自分自身と指定されたステージの両方
ToEither 実行結果もしくは例外を引数に関数を実行
After 正常終了した後
Async 非同期実行

こうして見ると前置ワードが違うだけで同じ意味を持つワードが割とある気がする。
なぞ・・・。

Discussion