Javaの関数型インターフェースのFunctionのサンプルです。
目次
説明 | Functionインターフェース |
サンプル | クラスにFunctionインターフェースを実装する |
匿名クラスでFunctionインターフェースを使用する |
Functionインターフェース
インターフェース | public interface Function<T,R> |
メソッド | R apply(T t) |
- Functionは、関数という意味です。入力と出力があります。
- applyメソッドは、引数があり、戻り値もあります。
- FunctionのTはメソッドの引数の型で、Rはメソッドの戻り値の型です。
- 以下は、OracleのJava8のFunctionインターフェースのリンクです。
https://docs.oracle.com/javase/jp/8/docs/api/java/util/function/Function.html
関数型インターフェースのFunctionのサンプルです。
package test1;
import java.util.function.Function;
public class Test1 {
public static void main(String[] args) {
Function <Integer,String> make1 = a -> a + "です";
String b = make1.apply(2);
System.out.println(b); //2です
}
}
3行目は、java.util.functionパッケージのFunctionインターフェースをimportしています。
8行目は、Functionインターフェースを使用したラムダ式です。
Function <Integer,String>の
Integerは、Function<T,R>のTでメソッドの引数の型です。
Stringは、Function<T,R>のRでメソッドの戻り値の型です。
10行目は、applyメソッドでIntegerの引数がありStringの値を返します。
クラスにFunctionインターフェースを実装する
package test1;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.function.Function;
public class Test1 {
public static void main(String[] args) {
List<Integer> num1 = new ArrayList<>(Arrays.asList(50, 10, 300));
Sort1 sort1 = new Sort1();
List<Integer> list1 = sort1.apply(num1);
for (Integer a : list1) {
System.out.println(a); // 10 50 300
}
}
}
class Sort1 implements Function<List<Integer>, List<Integer>> {
@Override
public List<Integer> apply(List<Integer> c1) {
Collections.sort(c1);
return c1;
}
}
6行目は、java.util.function.Functionインターフェースをimportしています。
20行目は、Functionインターフェースを実装しています。
最初のList<Integer>は引数の型で次のList<Integer>は戻り値の型です。
12行目は、applyメソッドです。引数と戻り値があります。
16行目は、数値が昇順にソートされて表示されます。
匿名クラスでFunctionインターフェースを使用する
package test1;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.function.Function;
public class Test1 {
public static void main(String[] args) {
List<Integer> c1 = new ArrayList<>(Arrays.asList(50, 10, 300));
List<Integer> list1 = new Function<List<Integer>, List<Integer>>() {
@Override
public List<Integer> apply(List<Integer> list1) {
Collections.sort(list1);
return list1;
}
}.apply(c1);
for (Integer a : list1) {
System.out.println(a); // 10 50 300
}
}
}
6行目は、java.util.functionパッケージのFunctionインターフェースをimportしています。
13行目は、匿名クラスです。クラス名はありません。
19行目は、applyメソッドです。引数と戻り値があります。
19行目は、数値が昇順にソートされて表示されます。
関連の記事
Java ラムダ式のサンプル
Java 関数型インターフェースのサンプル(Consumer)
Java 関数型インターフェースのサンプル(Supplier)