web-dev-qa-db-ja.com

Java引数と戻り値のない8つの機能的なインターフェース

何もとらず、何も返さないメソッドのJava 8機能インターフェイスとは何ですか?

つまり、戻り値の型がActionのC#パラメータなしvoidと同等ですか?

91
Miguel Gamboa

私が正しく理解していれば、メソッドvoid m()を備えた機能的なインターフェースが必要です。その場合、単に Runnable を使用できます。

83
assylias

自分で作る

@FunctionalInterface
public interface Procedure {
    void run();

    default Procedure andThen(Procedure after){
        return () -> {
            this.run();
            after.run();
        };
    }

    default Procedure compose(Procedure before){
        return () -> {
            before.run();
            this.run();
        };
    }
}

そして、このように使用します

public static void main(String[] args){
    Procedure procedure1 = () -> System.out.print("Hello");
    Procedure procedure2 = () -> System.out.print("World");

    procedure1.andThen(procedure2).run();
    System.out.println();
    procedure1.compose(procedure2).run();

}

そして出力

HelloWorld
WorldHello
8
Charana