「局所クラス(ローカルクラス)」は、ローカル変数のように、メソッド内でクラス宣言を行い、そのメソッド内でクラスを使う方法です。
public void method() { // 「局所クラス(ローカルクラス)」の宣言 class In { } // オブジェクトを作成 In in = new In(); }
「匿名クラス(無名内部クラス)」は、局所クラスの一種です。
メソッド内でオブジェクトの作成をしつつ、その後に「{ }」を加えることで、そのクラスのサブクラスを一時的に作り、メソッドのオーバーライドなどを行います。
public void method() {
// 「匿名クラス(無名内部クラス)」からオブジェクトを作成
MyClass mc = new MyClass() {
// メソッドをオーバーライド
@Override
public void method() {
System.out.println("MethodAnonymous");
}
};
}
┏匿名クラス━━━━━━━━━┓ ┃┏MyClass ━┓ ┃ MyClass mc = new ┃┃ ┃ ┃@Override ┃┃ ┠─×method() ┠─○method() ┃┗━━━━━┛ ┃ ┗━━━━━━━━━━━━━━┛
この匿名クラスは、インターフェースの実装などでもよく使われます。
JButton btn = new JButton();
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// クリック時の処理
}
});