| インタフェース | 説明 | 
|---|---|
| BiConsumer<T,U> | 2つの入力引数を受け取って結果を返さないオペレーションを表します。 | 
| BiFunction<T,U,R> | 2つの引数を受け取って結果を生成する関数を表します。 | 
| BinaryOperator<T> | 同じ型の2つのオペランドに作用してオペランドと同じ型の結果を生成する演算を表します。 | 
| BiPredicate<T,U> | 2つの引数の述語(boolean値関数)を表します。 | 
| BooleanSupplier | boolean値の結果のサプライヤを表します。 | 
| Consumer<T> | 単一の入力引数を受け取って結果を返さないオペレーションを表します。 | 
| DoubleBinaryOperator | 2つの double値オペランドに作用してdouble値の結果を生成する演算を表します。 | 
| DoubleConsumer | 単一の double値引数を受け取って結果を返さないオペレーションを表します。 | 
| DoubleFunction<R> | 1つのdouble値引数を受け取って結果を生成する関数を表します。 | 
| DoublePredicate | 1つの double値引数の述語(boolean値関数)を表します。 | 
| DoubleSupplier | double値の結果のサプライヤを表します。 | 
| DoubleToIntFunction | 1つのdouble値引数を受け取ってint値の結果を生成する関数を表します。 | 
| DoubleToLongFunction | 1つのdouble値引数を受け取ってlong値の結果を生成する関数を表します。 | 
| DoubleUnaryOperator | 単一の double値オペランドに作用してdouble値の結果を生成する演算を表します。 | 
| Function<T,R> | 1つの引数を受け取って結果を生成する関数を表します。 | 
| IntBinaryOperator | 2つの int値オペランドに作用してint値の結果を生成する演算を表します。 | 
| IntConsumer | 単一の int値引数を受け取って結果を返さないオペレーションを表します。 | 
| IntFunction<R> | 1つのint値引数を受け取って結果を生成する関数を表します。 | 
| IntPredicate | 1つの int値引数の述語(boolean値関数)を表します。 | 
| IntSupplier | int値の結果のサプライヤを表します。 | 
| IntToDoubleFunction | 1つのint値引数を受け取ってdouble値の結果を生成する関数を表します。 | 
| IntToLongFunction | 1つのint値引数を受け取ってlong値の結果を生成する関数を表します。 | 
| IntUnaryOperator | 単一の int値オペランドに作用してint値の結果を生成する演算を表します。 | 
| LongBinaryOperator | 2つの long値オペランドに作用してlong値の結果を生成する演算を表します。 | 
| LongConsumer | 単一の long値引数を受け取って結果を返さないオペレーションを表します。 | 
| LongFunction<R> | 1つのlong値引数を受け取って結果を生成する関数を表します。 | 
| LongPredicate | 1つの long値引数の述語(boolean値関数)を表します。 | 
| LongSupplier | long値の結果のサプライヤを表します。 | 
| LongToDoubleFunction | 1つのlong値引数を受け取ってdouble値の結果を生成する関数を表します。 | 
| LongToIntFunction | 1つのlong値引数を受け取ってint値の結果を生成する関数を表します。 | 
| LongUnaryOperator | 単一の long値オペランドに作用してlong値の結果を生成する演算を表します。 | 
| ObjDoubleConsumer<T> | オブジェクト値と double値の引数を受け取って結果を返さないオペレーションを表します。 | 
| ObjIntConsumer<T> | オブジェクト値と int値の引数を受け取って結果を返さないオペレーションを表します。 | 
| ObjLongConsumer<T> | オブジェクト値と long値の引数を受け取って結果を返さないオペレーションを表します。 | 
| Predicate<T> | 1つの引数の述語(boolean値関数)を表します。 | 
| Supplier<T> | 結果のサプライヤを表します。 | 
| ToDoubleBiFunction<T,U> | 2つの引数を受け取ってdouble値の結果を生成する関数を表します。 | 
| ToDoubleFunction<T> | double値の結果を生成する関数を表します。 | 
| ToIntBiFunction<T,U> | 2つの引数を受け取ってint値の結果を生成する関数を表します。 | 
| ToIntFunction<T> | int値の結果を生成する関数を表します。 | 
| ToLongBiFunction<T,U> | 2つの引数を受け取ってlong値の結果を生成する関数を表します。 | 
| ToLongFunction<T> | long値の結果を生成する関数を表します。 | 
| UnaryOperator<T> | 単一のオペランドに作用してオペランドと同じ型の結果を生成する演算を表します。 | 
     // Assignment context
     Predicate<String> p = String::isEmpty;
     // Method invocation context
     stream.filter(e -> e.getSize() > 10)...
     // Cast context
     stream.map((ToIntFunction) e -> e.getSize())...
 このパッケージ内のインタフェースはJDKで使用される汎用の関数型インタフェースですが、これらはユーザーコードでも使用可能です。これらは、ラムダ式の適応先として考えられる関数形式の完全なセットを特定するわけではありませんが、一般的な要件をカバーできるだけの十分なセットを提供します。特定の目的のために提供される他の関数型インタフェース(FileFilterなど)は、使用されるパッケージ内で定義されています。
 
このパッケージ内のインタフェースには注釈FunctionalInterfaceが付けられています。この注釈は、コンパイラがあるインタフェースを関数型インタフェースとして認識するのに必須のものではなく、設計の意図を捉え、その意図への偶発的な違反を特定する際にコンパイラの支援が得られるようにするための補助的な情報にすぎません。
 
関数型インタフェースは通常、関数、アクション、述語などの抽象的な概念を表します。関数型インタフェースのドキュメントを作成する際や関数型インタフェース型の変数に言及する際には、「このオブジェクトで表される関数」の代わりに「この関数」を使用するなど、そうした抽象的な概念に直接言及するのが一般的です。「指定された関数を...に適用する」のように、APIメソッドが関数型インタフェースを受け取ったり返したりすることがこの方法で書かれている場合、それは、対応する関数型インタフェースを実装するオブジェクトへの非null参照を意味するものと理解します(ただし、nullの可能性が明示されている場合はそのかぎりではありません)。
このパッケージ内の関数型インタフェースは、次のような拡張可能な命名規則に従います。
Function(TからRへの単一引数関数)、Consumer(Tからvoidへの単一引数関数)、Predicate(Tからbooleanへの単一引数関数)、Supplier(Rへの引数なし関数)など、基本的な関数形式がいくつか存在しています。
     BiFunction(TおよびUからRへの2引数関数)のように、基本形式を引数カウント接頭辞で修飾すれば、異なる引数カウントを示すことができます。
     Functionを拡張した)UnaryOperatorや(BiFunctionを拡張した)BinaryOperatorなど、基本関数形式を拡張した追加派生関数が存在しています。
     ToIntFunctionのように、ToXxxという接頭辞を付けます。それ以外の場合の型引数の特殊化は、DoubleConsumerやObjIntConsumerのように左から右に行われます。(型接頭辞Objは、ObjIntConsumerのように、そのパラメータは特殊化しないで次のパラメータに移ることを示す場合に使用します。)IntToDoubleFunctionのように、これらのスキームを組み合わせることもできます。
     ObjIntConsumer)。
     FunctionalInterface バグまたは機能を送信 
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
 Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.