工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Java 8ラムダ式マスター:関数型プログラミング入門

ラムダ式はJava 8で導入され、Java 8最大の機能と謳われています。ラムダ式は関数型プログラミングを容易にし、開発を大幅に簡素化します。

構文

ラムダ式は以下の構文で特徴づけられます。

parameter -> expression body

ラムダ式の重要な特徴

ラムダ式の例

public class Java8Tester {
    public static void main(String args[]) {
        Java8Tester tester = new Java8Tester();
        
        // 型宣言あり
        MathOperation addition = (int a, int b) -> a + b;
        // 型宣言なし
        MathOperation subtraction = (a, b) -> a - b;
        // return文と波括弧あり
        MathOperation multiplication = (int a, int b) -> { return a * b; };
        // return文なし、波括弧なし
        MathOperation division = (int a, int b) -> a / b;
        
        System.out.println("10 + 5 = " + tester.operate(10, 5, addition));
        System.out.println("10 - 5 = " + tester.operate(10, 5, subtraction));
        System.out.println("10 x 5 = " + tester.operate(10, 5, multiplication));
        System.out.println("10 / 5 = " + tester.operate(10, 5, division));
        
        // 括弧なし
        GreetingService greetService1 = message -> System.out.println("Hello " + message);
        // 括弧あり
        GreetingService greetService2 = (message) -> System.out.println("Hello " + message);
        greetService1.sayMessage("Mahesh");
        greetService2.sayMessage("Suresh");
    }
    
    interface MathOperation { int operation(int a, int b); }
    interface GreetingService { void sayMessage(String message); }
    
    private int operate(int a, int b, MathOperation mathOperation) {
        return mathOperation.operation(a, b);
    }
}

実行結果

10 + 5 = 15
10 - 5 = 5
10 x 5 = 50
10 / 5 = 2
Hello Mahesh
Hello Suresh

重要なポイント

スコープ

ラムダ式では、final変数または実質的にfinalな変数(一度だけ代入される変数)を参照できます。変数に2回目の代入を行うとコンパイルエラーになります。

スコープ例

public class Java8Tester {
    final static String salutation = "Hello! ";
    public static void main(String args[]) {
        GreetingService greetService1 = message -> System.out.println(salutation + message);
        greetService1.sayMessage("Mahesh");
    }
    interface GreetingService { void sayMessage(String message); }
}

実行結果

Hello! Mahesh

Java

  1. Java演算子をマスター:種類、構文、実践例
  2. Javaの式、文、ブロックを理解する
  3. Javaコメント:種類、使い方、ベストプラクティス
  4. Java拡張forループをマスター:構文、例、ベストプラクティス
  5. Java文字列をマスター:生成、メソッド、ベストプラクティス
  6. Javaインターフェース完全ガイド:概念、実装、ベストプラクティス
  7. Java無名インナークラス完全ガイド:定義、構文、実践例
  8. Javaのtry-with-resourcesをマスターする:自動リソース管理の仕組みと活用法
  9. Javaアノテーション完全ガイド:種類、配置場所、実践例
  10. Javaアサーション完全ガイド:バグ早期発見とコード信頼性の向上
  11. Java Vectorの理解:使い方、特徴、ArrayListとの比較