0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Javaのローカルクラス、無名クラス、ラムダ式を整理する

0
Last updated at Posted at 2025-10-04

はじめに

 ローカルクラス無名クラスラムダ式は似ている部分も多く、最初は違いが分かりにくいです。この記事では3つの書き方の違いを簡単にまとめてみました。

ローカルクラス

特徴

  • メソッドの中で定義するクラス
  • 名前を持つ
  • インスタンスを繰り返し生成できる

サンプルコード

public class Main {
    public static void main(String [] args) {
        class Greeting {
            void sayHello() {
                System.out.println("Hello from Local Class!");
            }
        }

        Greeting g1 = new Greeting();
        Greeting g2 = new Greeting();
        g1.sayHello();
        g2.sayHello();
    }
}
Hello from Local Class!
Hello from Local Class!

無名クラス

特徴

  • クラス名がない
  • 「1回だけ使うクラス」を、その場で書いてすぐインスタンス化
  • 抽象クラスやインターフェースの実装に便利

サンプルコード

public class Main {
    public static void main(String[] args) {
        Runnable r = new Runnable() {
            @Override
            public void run() {
                System.out.println("Hello from Anonymous Class!");
            }
        };
        r.run();
    }
}
Hello from Anonymous Class!

ラムダ式

特徴

  • 無名クラスの省略記法
  • 抽象メソッドが1つだけのインターフェース=関数型インターフェース限定
  • Java 8から使える

サンプルコード

public class Main {
    public static void main(String[] args) {
        Runnable r = () -> System.out.println("Hello from Lambda!");
        r.run();
    }
}
Hello from Lambda!

まとめ

特徴 ローカルクラス 無名クラス ラムダ式
名前 あり なし なし
再利用性 複数回可 1回限り 1回限り
実装対象 任意のクラス 任意のクラス/インターフェース 関数型インターフェース
記述の簡潔さ 普通 簡潔 最も簡潔
主な用途 複雑な処理をメソッド内でまとめる GUI, スレッド処理 ストリーム, 並列処理
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?