logo

Java 関数インターフェイス

抽象メソッドを 1 つだけ含むインターフェイスは、関数型インターフェイスと呼ばれます。デフォルトの静的メソッドをいくつでも含めることができますが、抽象メソッドは 1 つだけ含めることができます。オブジェクトクラスのメソッドも宣言できます。

関数型インターフェイスは、単一抽象メソッド インターフェイスまたは SAM インターフェイスとも呼ばれます。これは Java の新機能であり、関数型プログラミングのアプローチの実現に役立ちます。

git でチェックアウトする

例1

 @FunctionalInterface interface sayable{ void say(String msg); } public class FunctionalInterfaceExample implements sayable{ public void say(String msg){ System.out.println(msg); } public static void main(String[] args) { FunctionalInterfaceExample fie = new FunctionalInterfaceExample(); fie.say('Hello there'); } } 
今すぐテストしてください

出力:

 Hello there 

関数型インターフェイスにはオブジェクト クラスのメソッドを含めることができます。次の例を参照してください。

例 2

 @FunctionalInterface interface sayable{ void say(String msg); // abstract method // It can contain any number of Object class methods. int hashCode(); String toString(); boolean equals(Object obj); } public class FunctionalInterfaceExample2 implements sayable{ public void say(String msg){ System.out.println(msg); } public static void main(String[] args) { FunctionalInterfaceExample2 fie = new FunctionalInterfaceExample2(); fie.say('Hello there'); } } 
今すぐテストしてください

出力:

 Hello there 

無効な機能インターフェイス

関数型インターフェイスは、抽象メソッドを持たない場合にのみ、別のインターフェイスを拡張できます。

 interface sayable{ void say(String msg); // abstract method } @FunctionalInterface interface Doable extends sayable{ // Invalid '@FunctionalInterface' annotation; Doable is not a functional interface void doIt(); } 

出力:

 compile-time error 

例 3

次の例では、機能インターフェイスが非機能インターフェイスに拡張されています。

 interface Doable{ default void doIt(){ System.out.println('Do it now'); } } @FunctionalInterface interface Sayable extends Doable{ void say(String msg); // abstract method } public class FunctionalInterfaceExample3 implements Sayable{ public void say(String msg){ System.out.println(msg); } public static void main(String[] args) { FunctionalInterfaceExample3 fie = new FunctionalInterfaceExample3(); fie.say('Hello there'); fie.doIt(); } } 
今すぐテストしてください

出力:

「メイソンの公式」
 Hello there Do it now 

Java 定義済み関数インターフェイス

Java は、ラムダとメソッド参照を使用して関数型プログラミングを処理するための事前定義された関数型インターフェイスを提供します。

独自のカスタム関数インターフェイスを定義することもできます。以下は java.util.function パッケージに配置される関数インターフェースのリストです。


インターフェース 説明
バイコンシューマー これは、2 つの入力引数を受け入れ、結果を返さない操作を表します。
消費者 これは、単一の引数を受け入れ、結果を返さない操作を表します。
関数 これは、1 つの引数を受け入れ、結果を返す関数を表します。
述語 1 つの引数の述語 (ブール値関数) を表します。
バイファンクション これは 2 つの引数を受け取り、結果を返す関数を表します。
二項演算子 これは、同じデータ型の 2 つのオペランドに対する演算を表します。オペランドと同じ型の結果を返します。
二重述語 これは 2 つの引数の述語 (ブール値関数) を表します。
ブール値サプライヤー これは、ブール値の結果の供給者を表します。
ダブルバイナリ演算子 これは 2 つの double 型オペランドに対する演算を表し、double 型の値を返します。
ダブルコンシューマー これは、単一の double 型引数を受け取り、結果を返さない操作を表します。
ダブルファンクション これは、double 型の引数を受け入れ、結果を生成する関数を表します。
二重述語 これは、1 つの double 型引数の述語 (ブール値関数) を表します。
ダブルサプライヤー これは、double 型の結果の供給者を表します。
DoubleToIntFunction これは、double 型の引数を受け取り、int 型の結果を生成する関数を表します。
DoubleToLongFunction これは、double 型の引数を受け取り、long 型の結果を生成する関数を表します。
DoubleUnaryOperator これは、double 型の結果を生成する単一の double 型オペランドに対する演算を表します。
IntBinaryOperator これは 2 つの int 型オペランドに対する演算を表し、int 型の結果を返します。
IntConsumer これは、単一の整数引数を受け取り、結果を返さない操作を表します。
整数関数 これは、整数の引数を受け入れ、結果を返す関数を表します。
IntPredicate これは、1 つの整数引数の述語 (ブール値関数) を表します。
イントサプライヤー 整数型のサプライヤーを表します。
IntToDoubleFunction これは、整数の引数を受け入れ、double を返す関数を表します。
IntToLong関数 これは、整数の引数を受け入れ、long を返す関数を表します。
IntUnaryOperator これは、整数の結果を生成する単一の整数オペランドに対する演算を表します。
LongBinary演算子 これは 2 つの long 型オペランドに対する演算を表し、long 型の結果を返します。
ロングコンシューマー これは、単一の long 型引数を受け入れ、結果を返さない操作を表します。
LongFunction これは、long 型の引数を受け入れ、結果を返す関数を表します。
長い述語 これは、1 つの long 型引数の述語 (ブール値関数) を表します。
ロングサプライヤー これは、長い型の結果の供給者を表します。
LongToDoubleFunction これは、long 型の引数を受け取り、double 型の結果を返す関数を表します。
LongToIntFunction これは、long 型の引数を受け入れ、整数の結果を返す関数を表します。
Long単項演算子 これは、long 型の結果を返す単一の long 型オペランドに対する演算を表します。
ObjDoubleConsumer これは、オブジェクトと double 引数を受け取り、結果を返さない操作を表します。
ObjIntConsumer これは、オブジェクトと整数の引数を受け入れる操作を表します。結果は返されません。
ObjLongConsumer これはオブジェクトと長い引数を受け入れる操作を表し、結果を返しません。
サプライヤー 結果の供給者を表します。
ToDoubleBiFunction これは、2 つの引数を受け取り、double 型の結果を生成する関数を表します。
ToDoubleFunction double 型の結果を返す関数を表します。
ToIntBiFunction これは 2 つの引数を受け取り、整数を返す関数を表します。
ToIntFunction 整数を返す関数を表します。
ToLongBiFunction これは 2 つの引数を受け取り、long 型の結果を返す関数を表します。
ToLongFunction これはlong型の結果を返す関数を表します。
単項演算子 これは、オペランドと同じ型の結果を返す単一のオペランドに対する演算を表します。