staticメソッドやデフォルトメソッドの数にかかわらず、定義されている抽象メソッドが一つだけのインターフェースを関数型インターフェースという。
インターフェース名 | 宣言されている抽象メソッド |
---|---|
Function<T,R> |
R apply(T t) |
Consumer<T> |
void accept(T t) |
Predicate<T> |
boolean test(T t) |
Supplier<T> |
T get() |
UnaryOperator<T> |
T apply(T t) |
引数が2つの場合はインターフェース名の冒頭にBi
がつく。
上記のインターフェースは、それぞれint
型専用のものも用意されている。
インターフェース名 | 宣言されている抽象メソッド |
---|---|
IntFunction<R> |
R apply(int value) |
IntConsumer |
void accept(int value) |
IntPredicate |
boolean test(int value) |
IntSupplier |
int getAsInt() |
IntUnaryOperator |
int applyAsInt(int operand) |
IntBiUnaryOperator |
int applyAsInt(int left, int right) |
同様に、double
やlong
の場合のインターフェースも存在する。
import java.util.function.*;
String str = new Function<String String>() {
public String apply(String str) {
return "Hello " + str;
}
}.apply("world");
次の要件を満たしていれば、関数型インターフェースとして扱われる。