関数型インターフェースとは
抽象メソッドを1つだけ持つインターフェースのことで、ラムダ式やメソッド参照を渡す、代入先にすることができます。
関数型インターフェースの条件
・抽象メソッドを一つだけ持てる
・Objectクラスのpublicメソッドである抽象メソッドは含まれない
・defaultメソッドとstaticメソッドを複数持たせることができる
関数型インターフェースの定義は下記のように書きます。
main.java
@FunctionalInterface
public interface Sample {
public abstract void Hello(String name);
}
@FunctionalInterfaceというアノテーションをつけることで、関数型インターフェースだということを明示し、これによってインタフェースが関数型インターフェースの条件を満たしていない場合にコンパイルエラーを出すことができます。
種類
java.util.functionパッケージで、関数型インターフェースにはいくつかの種類が提供されています。受け取る引数と返す結果のパターンから大体4種類に分けられます。
基本的な関数型インターフェースは以下のとおりです。
種類 | 抽象メソッド | できること |
---|---|---|
Supplier | T get() | 引数がなく、T型の戻り値を返す |
Consumer | void accept(T t) | 処理を返す(値は返さない)。 |
Function | R apply(T t) | 引数としてTを受け取り、結果としてRを返す |
Predicate | boolean test(T t) | T型の引数を受け取り、booleanの値を結果として返す |
他にも、引数が2つの場合のインターフェース等種類があるので、用途に応じて使い分けます。