ラムダ式の基本的な構文

1.基本的な文法

Java8では新しい演算子「->」矢印演算子が導入されました。矢印演算子はLambda式を2つの部分に分割します

左側:抽象メソッドのパラメーターリストに対応するLambda式のパラメーターリスト

右:抽象メソッドで実装される機能に対応する、実行される機能

2.ヒント

左と右の間にブラケットを保存し、左側にタイプを推測し、

3.文法フォーマット

構文形式1:パラメータなし、戻り値なし

()-> System.out.println( "Hello");

   @Test
     public  void test1(){
         int num = 2; // jdk 1.7より前は、同じレベルで呼び出すことができるようになる前に、それがfinalでなければならない 
        Runnable r = new Runnable(){ 
            @Override 
            public  void run(){ 
                System.out.println( "Hello" + num); 
            } 
        }; 
        r.run(); 

        System.out.println( "---------------------" );
         // 使用ラムダ式
       Runnable r2 =()-> System.out.println( "Hello Lambda" ); 
        r2.run(); 
    }

 

構文形式2:パラメータが1つあり、戻り値はありません

    @Test
     public  void test2(){ 
        Consumer <String> con = (x)-> System.out.println(x); 
        con.accept( "パラメータがあります" ); 
    }

 

構文形式3:パラメーターが1つしかない場合は、括弧なしで記述せずに省略できます。

    @Test
     public  void test2(){ 
        Consumer <String> con = x-> System.out.println(x); 
        con.accept( "パラメータがあります" ); 
    }

 

構文フォーマット4:2つのパラメーターがあり、戻り値があり、Lambda本体に複数のステートメントがあります

  @Test
     public  void test4(){ 
        コンパレータ <Integer> com = (x、y)-> { 
            System.out.println( "Functional Interface"); 
            return Integer.compare(x、y); 
        }; 
    }

 

構文フォーマット5:2つのパラメーターがあり、戻り値があり、Lambda本体にはステートメントが1つしかなく、returnも{}も記述できません

    @Test
     public  void test5(){ 
        コンパレータ <Integer> com = (x、y)-> Integer.compare(x、y); 

    }

 

構文形式6: Lambda式のパラメーターリストデータ型は省略または書き込むことができます。

                      JVMコンパイラーはコンテキスト、データ型、つまり「型推論」から推論するため

                      (整数x、整数y)-> Intrger.compare(x、y);

4.ラムダ式には「関数型インターフェース」のサポートが必要

機能インターフェース:インターフェースには、@ FunctionalInterfaceで装飾できる抽象メソッドインターフェースが1つだけあります。機能インターフェースかどうかを確認できます

//インターフェース、唯一つのパラメータ、インターフェース戻り値
パッケージ
時計; @FunctionalInterface パブリック インターフェイスMYFUN { パブリック整数のgetValue(整数X); }
 // 要件:数値に対して操作を実行する
    @Test
     public  void test7(){ 
        Integer num = operation(100、x-> x * x); 
        System.out.println(num); 
        System.out.println(operation( 200 、y-> y + 200 )); 

    } 

    public Integer operation(Integer num、MyFun my){
         return my.getValue(num); 
    }

 

おすすめ

転載: www.cnblogs.com/wangxue1314/p/12756186.html