Supliter
Java Gold 試験において、Supplier は主要な 4 つの関数型インターフェースの中で最もシンプルな構造をしています。
Consumer が「受け取るだけ(消費)」なら、**Supplier は「渡すだけ(供給)」**の役割を担います。
1. Supplier の基本構造
Supplier
-
なぜ Supplier が必要なのか?(遅延評価) 「ただ値を返すだけなら、直接変数に代入すればいいのでは?」と思うかもしれません。しかし、Supplier の真価は 「必要になるまで実行を遅らせる(遅延評価)」 ことにあります。 代表的な活用例:Optional.orElseGet
-
orElse("Value"): 引数の値は常に評価されます。
- orElseGet(() -> "Value"): 値が必要になった瞬間(null だった時)に初めて get() が呼ばれます。重い処理を避けるための重要なテクニックです。
- プリミティブ型の Supplier
他のインターフェース同様、ボクシングを避けるための専用型があります。Supplier
は get() ですが、これらは getAsプリミティブ型() というメソッド名になるのが試験での注意点です。 - IntSupplier: int getAsInt()
- LongSupplier: long getAsLong()
- DoubleSupplier: double getAsDouble()
- BooleanSupplier: boolean getAsBoolean()
- 関数型インターフェース 4 種の総まとめ これで主要な 4 つが出揃いました。試験直前の見直し用に表で整理しましょう。
| インターフェース | 抽象メソッド | 引数 | 戻り値 | 役割 |
|---|---|---|---|---|
| Predicate |
test(T t) | 1 | boolean | 条件の判定 |
| Consumer |
accept(T t) | 1 | void | 値の消費 |
| Function |
apply(T t) | 1 | R | 型の変換 |
| Supplier |
get() | 0 | T | 値の供給 |
- 試験対策クイズ これら 4 つのインターフェースの「メソッド名」は混同しやすい部分です。 問題:次の組み合わせのうち、正しいものはどれですか?
- Consumer - apply()
- Supplier - test()
- Predicate - test()
- Function - get()
正解: 3
(1は accept、2は get、4は apply です) ここまでで Java Gold の関数型インターフェースの基礎はバッチリです! 仕上げとして、「これらを使った Stream API の実践問題(Gold 試験レベル)」に挑戦してみますか?それとも、UnaryOperator などの派生形について深掘りしますか?