頭脳一式

人の記憶なんて曖昧なもの。すべての情報を頭に記憶するなんてナンセンス。困ったらここに来ればいいじゃん?というスタンスで最強のナレッジベースを目指すブログ

【Java】匿名クラス(AnonymousClass)の書き方

匿名クラス(AnonymousClass)とは

匿名クラス(AnonymousClass)とはクラス名を持たないクラスのことを指し、
newキーワードともに「クラスの宣言」と「インスタンスの生成」を同時に行うことが出来る。
一般的にはインターフェースの実装をその場で行うために使用される。

構文

new InterFaceName(){
  //メソッド実装
}

インターフェースを匿名クラスとして実装した例

@FunctionalInterface
public interface IF {
    public void method1(String str);
}

匿名クラスとしてインターフェースを実装した例

public class Main {
    public static void main(String args[]){

        IF IF = new IF(){
            public void method1(String str){
                System.out.println(str);
            }
        };
        IF.method1("test");  //test
    }
}

上記を簡略化した実装例

public class Main {
    public static void main(String args[]){

        new IF(){
            public void method1(String str){
                System.out.println(str);
            }
        }.method1("test");
    }
                   
}

インターフェースを引数に取るメソッド

public class Main {
    public static void main(String args[]){
        Main m = new Main();
        m.callIF(new IF(){
            public void method1(String str){
                System.out.println(str);
            }
        });
    }
    public void callIF(IF IF){
        System.out.println("1");
        IF.method1("test");
        System.out.println("3");
    }
}