閲覧中:
Supliter

Supliter

Java Gold 試験において、Supplier は主要な 4 つの関数型インターフェースの中で最もシンプルな構造をしています。 Consumer が「受け取るだけ(消費)」なら、**Supplier は「渡すだけ(供給)」**の役割を担います。 1. Supplier の基本構造 Supplier は、引数を一切受け取らず、型 T の結果を返します。 * 抽象メソッド: T get() * パッケージ: java.util.function * 特徴: 引数がないため、ラムダ式では必ず () -> ... という形になります。 コード例:

Java
現在時刻を供給するあるいは新しいオブジェクトを生成する際によく使われます
// Stringを供給するSupplier
Supplier<String> s1 = () -> "Hello Gold!";
System.out.println(s1.get());

// インスタンスを生成する(メソッド参照)
Supplier<List<String>> listSupplier = ArrayList::new;
List<String> newList = listSupplier.get();

  1. なぜ Supplier が必要なのか?(遅延評価) 「ただ値を返すだけなら、直接変数に代入すればいいのでは?」と思うかもしれません。しかし、Supplier の真価は 「必要になるまで実行を遅らせる(遅延評価)」 ことにあります。 代表的な活用例:Optional.orElseGet

    Java
    String result = Optional.ofNullable(maybeNull)
        .orElseGet(() -> "Default Value"); // 値が null の時だけ実行される
    

  2. orElse("Value"): 引数の値は常に評価されます。

  3. orElseGet(() -> "Value"): 値が必要になった瞬間(null だった時)に初めて get() が呼ばれます。重い処理を避けるための重要なテクニックです。
  4. プリミティブ型の Supplier 他のインターフェース同様、ボクシングを避けるための専用型があります。Supplier は get() ですが、これらは getAsプリミティブ型() というメソッド名になるのが試験での注意点です。
  5. IntSupplier: int getAsInt()
  6. LongSupplier: long getAsLong()
  7. DoubleSupplier: double getAsDouble()
  8. BooleanSupplier: boolean getAsBoolean()
  9. 関数型インターフェース 4 種の総まとめ これで主要な 4 つが出揃いました。試験直前の見直し用に表で整理しましょう。
インターフェース 抽象メソッド 引数 戻り値 役割
Predicate test(T t) 1 boolean 条件の判定
Consumer accept(T t) 1 void 値の消費
Function apply(T t) 1 R 型の変換
Supplier get() 0 T 値の供給
  1. 試験対策クイズ これら 4 つのインターフェースの「メソッド名」は混同しやすい部分です。 問題:次の組み合わせのうち、正しいものはどれですか?
  2. Consumer - apply()
  3. Supplier - test()
  4. Predicate - test()
  5. Function - get()

正解: 3

(1は accept、2は get、4は apply です) ここまでで Java Gold の関数型インターフェースの基礎はバッチリです! 仕上げとして、「これらを使った Stream API の実践問題(Gold 試験レベル)」に挑戦してみますか?それとも、UnaryOperator などの派生形について深掘りしますか?