Java Gold SE11対策:ラムダ式の書き方、どこまで知ってる?試験頻出ルールを解説!

Java Gold SE11の試験では、ラムダ式(lambda expression)が頻出トピックです。
しかし、(x, y) -> x + y のような省略された記法が突然出てくると「何をやっているのか分からない…」と戸惑う方も多いでしょう。
この記事では、ラムダ式の構文を基礎から整理し、Java Gold SE11に必要な知識に絞って、しっかり理解できるように解説します。
目次
1. ラムダ式とは?
Java 8で導入された、関数型インタフェースの実装を簡潔に書くための構文です。
本来は匿名クラスで書いていたような処理を、短くシンプルに記述できます。
// 匿名クラス
Comparator<String> comp = new Comparator<String>() {
public int compare(String a, String b) {
return a.length() – b.length();
}
};
// ラムダ式
Comparator<String> comp2 = (a, b) -> a.length() – b.length();
2. ラムダ式の構文の基本形
(引数) -> { 処理 }
具体例:
x -> x * x // 引数1つ(型省略)、戻り値1行
(x, y) -> x + y // 引数2つ、1行処理
(String s) -> s.length() // 引数の型を明記
() -> System.out.println(“Hi”) // 引数なし
x -> { return x * 2; } // ブロック使用(returnあり)
3. 書き方ルール(試験で狙われるポイント)
✅ 引数が1つだけ → () を省略できる
s -> s.length() // OK
(String s) -> s.length() // OK(型あり)
❌ 引数が2つ以上 → 必ず () が必要
(x, y) -> x + y // OK
x, y -> x + y // NG:括弧がない
✅ 処理が1文だけ → {} と return は省略可
x -> x + 1 // OK
x -> { return x + 1; } // OK(明示的)
❌ 2文以上ある場合 → {} が必須
x -> {
int result = x * 2;
return result;
} // OK
x -> int result = x * 2; return result; // NG:複数文で{}がない
✅ 型推論は基本的に可能
Function<String, Integer> f = s -> s.length(); // OK(型推論)
⚠️ 試験で出やすい間違いパターン
パターン | 解説 |
x, y -> x + y | 括弧がない(引数2つ以上は必ず(x, y)) |
x -> { return x + 1 } | セミコロンなし(return文には ; が必要) |
(int x, y) -> x + y | 型を一部だけ指定するのはNG(両方指定必要) |
4. ラムダ式の戻り値と型について
ラムダ式の「戻り値」は、処理の最後の値がそのまま返されます。
ブロック {} を使った場合は return を明記する必要があります。
x -> x + 1 // 暗黙的な戻り値(return省略)
x -> { return x + 1; } // 明示的な戻り値
型は コンテキストから推論される ため、通常は明記しなくてもOK。
ただし、推論できない場面では明示が必要になります。
コラム:文(statement)と式(expression)の違い
- 式(expression):値を返す → x -> x + 1
- 文(statement):命令的な処理 → x -> { int y = x + 1; return y; }
試験では「式の中に文を書いてる」ようなパターンでミスを誘います。
文がある場合は {} 必須!と覚えましょう。
まとめ:覚えておくべき構文ルール
- 引数が1つ → () 省略OK
- 引数が複数 or 型あり → () 必須
- 処理が1文 → {}・return 省略OK
- 処理が複数文 → {} と return 必須
- 型推論される → 基本は型指定しないでOK
おわりに
ラムダ式の構文ルールを正しく覚えることは、Stream APIやOptionalとの連携を理解する上での第一歩です。
Java Gold SE11の試験では、「どのラムダ式が正しくコンパイルされるか」といった選択問題も多く、構文ミスで点を落とすケースが非常に多いです。