関数型インターフェスとLambda
Javaでは変数として関数(処理の実装)を受け取るための変数が用意されています。
関数型インタフェースの用途を理解することでLambda式も理解できるかと思います。
変数型 | サンプル |
---|---|
String | "abcdefg" |
Integer | 123456 |
関数型インタフェース | x+yの結果を返す関数 |
関数型インタフェースについてはjava.util.functionパッケージ内で準備されています。
関数型インタフェースの概要についていくつか説明します。
関数型インタフェース | メソッド | 概要 |
---|---|---|
Function<T,R> | R apply(T t) | 入力値Tを受け取り、結果Rを返却 |
Predicate<T> | boolena test(T t) | 入力値Tを受け取り、評価結果booleanを返却 |
Consumer<T> | void accept(T t) | 入力値Tを受け取る |
Supplier<T> | T get() | 結果Tを返却 |
Function<T,R>のサンプル
入力値を受け取り、大文字変換し返却
public class App {
public static void main(String[] args) {
Function<String, String> toUpperCase = String::toUpperCase;
System.out.println(toUpperCase.apply("hello world!"));
}
}
Predicate<T>のサンプル
入力値を受け取り、ブランクであるかどうか検証
public class App {
public static void main(String[] args) {
Predicate<String> predicate = String::isEmpty;
System.out.println(predicate.test("abc"));
}
}
Consumer<T>のサンプル
入力値を受け取り、結果は返さない
public class App {
public static void main(String[] args) {
Consumer<String> consumer = System.out::println;
consumer.accept("Hello World!");
}
}
Supplier<T>のサンプル
引数は受け取らず、結果のみを返却
public class App {
public static void main(String[] args) {
Supplier<String> supplier = () -> "Hello World!";
System.out.println(supplier.get());
}
}
まとめ
今回は関数型インタフェースをlambdaで記載したサンプルコードとなります。
lambdaを利用することで直感的なコード記載が可能になりますので、生産性向上、品質向上に寄与できると思います。
lambda式マスターとなり、スキル向上を目指していきましょう!