関数型インターフェース(Functional Interface)

関数型インターフェースとは

関数型インターフェースは、1つの抽象メソッドのみを持つインターフェースです。
通常はラムダ式やストリーム操作などと組み合わせて使用されます。

Javaの標準ライブラリにはよく使用される関数型インターフェースが既に用意されているので、通常はこれを使用します。
(自身で関数型インターフェースを定義することも可能です。)

関数型インターフェースの条件

関数型インターフェースとするには以下の条件があります。

  • 抽象メソッドを1つのみ持つ
    (staticメソッド、デフォルトメソッドは定義可能 ※1)
  • Objectクラスのpublicメソッドは抽象メソッドしてなら定義可能
  • アノテーション「@FunctionalInterface」を指定することが推奨される
    (必須ではない)

※1 Java SE8から定義できるようになりました。

関数型インターフェースの定義サンプル

自身で関数型インターフェースを定義する場合は以下のような感じになります。

(関数型インターフェースの例)

@FunctionalInterface
interface SampleFunctionalInterface {
  void doMethod();
}

1つの抽象メソッドを持つインターフェースとして定義します。 アノテーション「@FunctionalInterface」の指定は必須ではありませんが、 指定しておくと、関数型インターフェースの条件に合致しない場合はコンパイルエラーとなり、すぐにミスに気付けるため指定することをおすすめします。

コメント

タイトルとURLをコピーしました