Java 8 - 機能インターフェース
機能的インターフェースには、示す単一の機能があります。たとえば、単一のメソッド「compareTo」を持つ Comparable インターフェイスは、比較の目的で使用されます。 Java 8 では、ラムダ式で広く使用される多くの関数型インターフェイスが定義されています。以下は、java.util.Function パッケージで定義されている機能インターフェースのリストです。
| Sr.No. | インターフェースと説明 |
|---|---|
| 1 |
BiConsumer 2 つの入力引数を受け入れ、結果を返さない操作を表します。 |
| 2 |
BiFunction 2 つの引数を受け取り、結果を生成する関数を表します。 |
| 3 |
BinaryOperator 同じ型の 2 つのオペランドに対する演算を表し、オペランドと同じ型の結果を生成します。 |
| 4 |
BiPredicate 2 つの引数の述語 (ブール値関数) を表します。 |
| 5 | BooleanSupplier ブール値の結果のサプライヤーを表します。 |
| 6 |
消費者 単一の入力引数を受け入れ、結果を返さない操作を表します。 |
| 7 | DoubleBinaryOperator 2 つの double 値のオペランドに対する操作を表し、double 値の結果を生成します。 |
| 8 | ダブルコンシューマー 単一の double 値の引数を受け入れ、結果を返さない操作を表します。 |
| 9 |
ダブルファンクション double 値の引数を受け入れて結果を生成する関数を表します。 |
| 10 | 二重述語 1 つの double 値の引数の述語 (ブール値関数) を表します。 |
| 11 | ダブルサプライヤー 二重値の結果のサプライヤーを表します。 |
| 12 | DoubleToIntFunction double 値の引数を受け入れ、int 値の結果を生成する関数を表します。 |
| 13 | DoubleToLongFunction double 値の引数を受け入れ、long 値の結果を生成する関数を表します。 |
| 14 | DoubleUnaryOperator 二重値の結果を生成する単一の二重値オペランドに対する演算を表します。 |
| 15 |
関数 1 つの引数を受け取り、結果を生成する関数を表します。 |
| 16 | IntBinaryOperator 2 つの int 値のオペランドに対する演算を表し、int 値の結果を生成します。 |
| 17 | IntConsumer 単一の int 値の引数を受け入れ、結果を返さない操作を表します。 |
| 18 |
IntFunction int 値の引数を受け取り、結果を生成する関数を表します。 |
| 19 | IntPredicate 1 つの int 値の引数の述語 (ブール値関数) を表します。 |
| 20 | IntSupplier int 値の結果のサプライヤーを表します。 |
| 21 | IntToDoubleFunction int 値の引数を受け入れ、double 値の結果を生成する関数を表します。 |
| 22 | IntToLongFunction int 値の引数を受け入れ、long 値の結果を生成する関数を表します。 |
| 23 | IntUnaryOperator int 値の結果を生成する単一の int 値のオペランドに対する演算を表します。 |
| 24 | LongBinaryOperator long 値の 2 つのオペランドに対する演算を表し、long 値の結果を生成します。 |
| 25 | ロングコンシューマー 単一の長い値の引数を受け入れ、結果を返さない操作を表します。 |
| 26 |
長関数 long 値の引数を受け取り、結果を生成する関数を表します。 |
| 27 | 長い述語 1 つの長い値の引数の述語 (ブール値関数) を表します。 |
| 28 | ロングサプライヤー 長期的に評価される結果のサプライヤーを表します。 |
| 29 | LongToDoubleFunction long 値の引数を受け入れ、double 値の結果を生成する関数を表します。 |
| 30 | LongToInt 関数 long 値の引数を受け入れ、int 値の結果を生成する関数を表します。 |
| 31 | LongUnaryOperator long 値の結果を生成する 1 つの long 値オペランドに対する操作を表します。 |
| 32 |
ObjDoubleConsumer オブジェクト値と double 値の引数を受け入れ、結果を返さない操作を表します。 |
| 33 |
ObjIntConsumer オブジェクト値および int 値の引数を受け入れ、結果を返さない操作を表します。 |
| 34 |
ObjLongConsumer オブジェクト値と long 値の引数を受け入れ、結果を返さない操作を表します。 |
| 35 |
述語 1 つの引数の述語 (ブール値関数) を表します。 |
| 36 |
サプライヤー 結果のサプライヤーを表します。 |
| 37 |
ToDoubleBiFunction 2 つの引数を受け取り、double 値の結果を生成する関数を表します。 |
| 38 |
ToDoubleFunction double 値の結果を生成する関数を表します。 |
| 39 |
ToIntBiFunction 2 つの引数を受け取り、int 値の結果を生成する関数を表します。 |
| 40 |
ToIntFunction int 値の結果を生成する関数を表します。 |
| 41 |
ToLongBiFunction 2 つの引数を受け取り、long 値の結果を生成する関数を表します。 |
| 42 |
ToLongFunction long 値の結果を生成する関数を表します。 |
| 43 |
単項演算子 オペランドと同じ型の結果を生成する単一のオペランドに対する演算を表します。 |
機能インターフェースの例
Predicate
たとえば、C:\> JAVA.
などで任意のエディターを使用して、次の Java プログラムを作成します。Java8Tester.java
ライブデモ
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;
public class Java8Tester {
public static void main(String args[]) {
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
// Predicate<Integer> predicate = n -> true
// n is passed as parameter to test method of Predicate interface
// test method will always return true no matter what value n has.
System.out.println("Print all numbers:");
//pass n as parameter
eval(list, n->true);
// Predicate<Integer> predicate1 = n -> n%2 == 0
// n is passed as parameter to test method of Predicate interface
// test method will return true if n%2 comes to be zero
System.out.println("Print even numbers:");
eval(list, n-> n%2 == 0 );
// Predicate<Integer> predicate2 = n -> n > 3
// n is passed as parameter to test method of Predicate interface
// test method will return true if n is greater than 3.
System.out.println("Print numbers greater than 3:");
eval(list, n-> n > 3 );
}
public static void eval(List<Integer> list, Predicate<Integer> predicate) {
for(Integer n: list) {
if(predicate.test(n)) {
System.out.println(n + " ");
}
}
}
}
ここでは、単一の入力を取り、ブール値を返す Predicate インターフェースを渡しました。
結果を確認する
javac を使用してクラスをコンパイルします 次のようにコンパイラ-
C:\JAVA>javac Java8Tester.java
次のように Java8Tester を実行します −
C:\JAVA>java Java8Tester
次の出力が生成されるはずです −
Print all numbers: 1 2 3 4 5 6 7 8 9 Print even numbers: 2 4 6 8 Print numbers greater than 3: 4 5 6 7 8 9
Java