Java 匿名クラス (Anonymous Class)
1. 匿名クラスとは?
匿名クラス(Anonymous Class)とは、名前を持たないクラスのことです。これはクラスの定義とオブジェクト(Object)の作成を同時に行うために使用されます。
通常、匿名クラスは、別のクラスファイルを個別に作成することなく、既存のクラスのメソッド(Method)をオーバーライド(Override)したり、インターフェースをその場で実装したりするために利用されます。
以下は、別のクラスを継承(Inherit)し、そのメソッドをオーバーライドする匿名クラスの作成例です。
// 通常のクラス
class Animal {
public void makeSound() {
System.out.println("動物が音を出します");
}
}
public class Main {
public static void main(String[] args) {
// makeSound() をオーバーライドする匿名クラス
Animal myAnimal = new Animal() {
public void makeSound() {
System.out.println("ワンワン(Woof woof)");
}
}; // オブジェクトを作成するコード行を終了させるためにセミコロンが必要です
myAnimal.makeSound();
}
}出力結果:
ワンワン(Woof woof)2. インターフェースからの匿名クラス作成
匿名クラスを使用して、インターフェース(Interface)を即座に実装することも可能です。
// インターフェース
interface Greeting {
void sayHello();
}
public class Main {
public static void main(String[] args) {
// Greetingインターフェースを実装する匿名クラス
Greeting greet = new Greeting() {
public void sayHello() {
System.out.println("こんにちは、世界!(Hello, World!)");
}
};
greet.sayHello();
}
}出力結果:
こんにちは、世界!(Hello, World!)3. 匿名クラスはいつ使うべきか?
匿名クラスは、一度しか使用しない短いクラスが必要な場合に適しています。具体的なユースケース(Use case)は以下の通りです:
- 新しいサブクラスを作成することなく、特定のメソッドのみをオーバーライドしたい場合
- インターフェースを迅速に実装したい場合
- 小さな動作の断片をオブジェクトとして渡したい場合