🎛️
【Java】CompletionStageのメソッド達を系統化してみる
仕事でCompletionStage を使う機会があったのですが、似たような名前のメソッドが多く混乱したので整理し、俯瞰的に眺めてみました。
系統図
各メソッドをワード毎にグルーピングして系統図っぽく図示してみました。
図の左から右に向かって、ワードを組み合わせてメソッド名が出来上がるイメージです。
また冒頭のワード毎に経路を分けてあります。
例えば、「●」->「accept」->「Either」->「◉」は「acceptEither」と読みます。
また、色が違う経路は通れないので、「●」->「accept」->「Both」とはなりません。
各ワードと意味
ワードの意味をまとめるとざっとこんな感じ。
ワード | 意味 |
---|---|
then | 正常終了した |
when | 正常・異常問わず終了した |
handle | 実行結果もしくは例外を引数に関数を実行 |
exceptionally | 例外を引数に関数を実行 |
accept | 引数付きでアクションを実行 |
apply | 引数付きで関数を実行 |
run | 引数なしでアクションを実行 |
combine | 自身と指定されたもう1つの実行結果を引数に関数を実行 |
compose | 自身を引数に関数を実行 |
complete | 実行結果もしくは例外を引数に関数を実行 |
Either | 実行結果もしくは例外を引数に関数を実行 |
Both | 自分自身と指定されたステージの両方 |
ToEither | 実行結果もしくは例外を引数に関数を実行 |
After | 正常終了した後 |
Async | 非同期実行 |
こうして見ると前置ワードが違うだけで同じ意味を持つワードが割とある気がする。
なぞ・・・。
Discussion