🎛️
【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