Java Gold SE11対策:Javaラムダ式で必須!関数型インタフェース9選を徹底整理

Java Gold SE11では、ラムダ式と密接に関係する「関数型インタフェース」が非常に重要なトピックです。
Java Silverでも基本的な Function, Predicate, Consumer, Supplier などが登場しましたが、
Goldレベルではさらに応用的なインタフェースの理解が問われます。
本記事では、試験対策として必要な代表的インタフェースの一覧に加え、特に出題頻度の高い応用系インタフェース(例:UnaryOperator, BinaryOperator, BiFunction など)も含めて解説します。
目次
1. 関数型インタフェースとは?
関数型インタフェース(Functional Interface)とは、抽象メソッドが1つだけ定義されたインタフェースです。
@FunctionalInterface
public interface MyFunc {
int execute(String s);
}
@FunctionalInterface アノテーションは任意ですが、付けておくと「抽象メソッドが2つ以上あるとエラー」になるので、ミスを防げます。
2. 試験で出る代表的な関数型インタフェース
インタフェース | 引数 | 戻り値 | 説明 |
Function<T, R> | 1つ | R型 | T型をR型に変換(mapなど) |
Predicate | 1つ | boolean | 条件判定(filterなど) |
Consumer | 1つ | void | 値を使って副作用処理(forEachなど) |
Supplier | なし | T型 | 値を提供(遅延評価) |
UnaryOperator | 1つ | T型 | T型→T型(Function<T,T>の特化) |
BinaryOperator | 2つ | T型 | T型×T型→T型(BiFunction<T,T,T>の特化) |
BiFunction<T,U,R> | 2つ | R型 | TとUを受け取り、Rを返す |
BiPredicate<T,U> | 2つ | boolean | TとUの条件判定 |
BiConsumer<T,U> | 2つ | void | TとUを使って処理を行う |
すべて java.util.function パッケージに含まれています。
3. 使用例(応用系も含む)
// UnaryOperator
UnaryOperator<String> upper = s -> s.toUpperCase();
System.out.println(upper.apply(“java”)); // JAVA
// BinaryOperator
BinaryOperator<Integer> add = (a, b) -> a + b;
System.out.println(add.apply(3, 5)); // 8
// BiFunction
BiFunction<String, Integer, String> repeat = (s, n) -> s.repeat(n);
System.out.println(repeat.apply(“hi”, 3)); // hihihi
// BiPredicate
BiPredicate<String, Integer> longerThan = (s, len) -> s.length() > len;
System.out.println(longerThan.test(“hello”, 3)); // true
// BiConsumer
BiConsumer<String, Integer> printer = (s, n) -> System.out.println(s + “:” + n);
printer.accept(“score”, 100);
4. 覚えるコツと見分け方
キー | 内容 |
引数なし | Supplier |
引数1つ(戻り値あり) | Function |
引数1つ(boolean) | Predicate |
引数1つ(副作用) | Consumer |
引数2つ、戻り値あり | BiFunction |
引数2つ、boolean | BiPredicate |
引数2つ、副作用 | BiConsumer |
Function<T,T>の特化 | UnaryOperator |
BiFunction<T,T,T>の特化 | BinaryOperator |
5. 試験対策ポイント
- ラムダ式の文脈で「どの関数型インタフェースに一致するか」を問う設問が出る
- メソッド名(apply, test, accept, get)で見分ける問題が頻出
- <T, R> や <T, U, R> などのジェネリクスの意味を把握しておくこと
- default や static メソッドがあっても、抽象メソッドが1つならOK
@FunctionalInterface
interface Task {
void run();
default void log() {}
static void help() {}
}
6. まとめチェックリスト
抽象メソッドが1つ → ラムダ式OK
Java Goldでは Bi系や Operator系のインタフェースも出題対象
apply/test/accept/get などメソッド名の違いに注意
引数の数・型と戻り値で適切なインタフェースを選ぶ
おわりに
Java Gold SE11における関数型インタフェースは、ただの前提知識ではなく、StreamやOptional、ラムダ式の動作理解に直結します。
基本4種だけでなく、Bi系・Operator系の使い分けをしっかり整理しておくことで、試験本番でも迷わず選択肢を判断できるようになります。
ぜひ繰り返し確認し、実装でも活用してみてください!