Java8でLambdaを書く際によく使用する関数型インターフェースのほとんどは、java.util.functionに用意されています。
しかし、どのシチュエーションで、そのインターフェースを使えば良いか最初はわかりにくいです。
なので、引数の型や戻り値などから使うべきインターフェースを、逆引きで一覧にしてみました。
- Function系
引数が1つまたは2つあり、戻り値があるパターン
| 1つ目の引数の型 | 2つ目の引数の型 | 戻り値の型 | インターフェース名 | 備考 |
|---|---|---|---|---|
| 指定 | - | 指定 | Function | |
| Integer | - | 指定 | IntFunction | |
| Long | - | 指定 | LongFunction | |
| Double | - | 指定 | DoubleFunction | |
| 指定 | 指定 | 指定 | BiFunction | |
| 指定 | - | Integer | ToIntFunction | |
| 指定 | - | Long | ToLongFunction | |
| 指定 | - | Double | ToDoubleFunction | |
| 指定 | 指定 | Integer | ToIntBiFunction | |
| 指定 | 指定 | Long | ToLongBiFunction | |
| 指定 | 指定 | Double | ToDoubleBiFunction | |
| Integer | - | Long | IntToLongFunction | |
| Integer | - | Double | IntToDoubleFunction | |
| Long | - | Integer | LongToIntFunction | |
| Long | - | Double | LongToDoubleunction | |
| Double | - | Integer | DoubleToIntFunction | |
| Double | - | Long | DoubleToIntFunction |
- Consumer系
引数が1つまたは2つあり、戻り値がないパターン
| 1つ目の引数の型 | 2つ目の引数の型 | 戻り値の型 | インターフェース名 | 備考 |
|---|---|---|---|---|
| 指定 | - | void | Consumer | |
| Integer | - | void | IntConsumer | |
| Long | - | void | LongConsumer | |
| Double | - | void | DoubleConsumer | |
| 指定 | 指定 | void | BiConsumer | |
| 指定 | Integer | void | ObjIntConsumer | |
| 指定 | Long | void | ObjLongConsumer | |
| 指定 | Double | void | ObjDoubleConsumer |
- Supplier系
引数が無く、戻り値があるパターン
| 1つ目の引数の型 | 2つ目の引数の型 | 戻り値の型 | インターフェース名 | 備考 |
|---|---|---|---|---|
| - | - | 指定 | Supplier | |
| - | - | Integer | IntSupplier | |
| - | - | Long | LongSupplier | |
| - | - | Double | DoubleSupplier | |
| - | - | boolean | BooleanSupplier |
- Predicate系
引数が1つまたは2つあり、戻り値がbolean型のパターン
| 1つ目の引数の型 | 2つ目の引数の型 | 戻り値の型 | インターフェース名 | 備考 |
|---|---|---|---|---|
| 指定 | - | boolean | Predicate | |
| 指定 | 指定 | boolean | BiPredicate | |
| Integer | - | boolean | IntPredicate | |
| Long | - | boolean | LongPredicate | |
| Double | - | boolean | DoublePredicate |
- UnaryOperator系
1つ目の引数と戻り値の型が同じパターン
| 1つ目の引数の型 | 2つ目の引数の型 | 戻り値の型 | インターフェース名 | 備考 |
|---|---|---|---|---|
| 指定 | - | 1つ目の引数と同じ | UnaryOperator | |
| Integer | - | Integer | IntUnaryOperator | |
| Long | - | Long | LongUnaryOperator | |
| Double | - | Double | DoubleUnaryOperator |