Javaマルチスレッド02:Lambda式


Javaマルチスレッド02:Lambda式


Lambda式


λギリシャのアルファベットの中で11位のアルファベットを並べて、英語の名前はLambdaです
匿名の内部クラス定義が多すぎることを避ける
本質は関数式プログラミングの概念に属する
(params) -> expression[ ]
(params) -> statement[ ]
(params) -> {statements}

なぜLambda式を使うのか
  • 匿名の内部クラス定義が多すぎることを避ける
  • コードをより簡潔に見せることができます
  • は意味のないコードを削除し、コアの論理
  • だけを残した.
    Functional Interface(関数インタフェース)を理解することはJava 8 Lambda式を学ぶ上で重要なポイントです.
    関数インタフェースの定義:
    任意のインタフェースは、唯一の抽象メソッドのみが含まれている場合、関数インタフェースです.(例えばRunnable)
    関数インタフェースの場合、Lambda式でインタフェースのオブジェクトを作成できます.
    Lambda式の導出
    /*
     lambda 
     */
    public class TestLambda01 {
         
    
        //3. 
        static class Like2 implements ILike{
         
    
            @Override
            public void lambda() {
         
                System.out.println("i like lambda2");
            }
        }
    
        public static void main(String[] args) {
         
            ILike like = new Like();
            like.lambda();
    
            like = new Like2();
            like.lambda();
    
            // 
            class Like3 implements ILike{
         
    
                @Override
                public void lambda() {
         
                    System.out.println("i like lambda3");
                }
            }
            like = new Like3();
            like.lambda();
    
            //5. , , 
            like = new ILike() {
         
                @Override
                public void lambda() {
         
                    System.out.println("i like lambda4");
                }
            };
    
            // lambda 
            like = ()->{
         
                System.out.println("i like lambda5");
            };
            like.lambda();
        }
    }
    
    //1. 
    interface ILike{
         
        void lambda();
    }
    
    //2. 
    class Like implements ILike{
         
    
        @Override
        public void lambda() {
         
            System.out.println("i like lambda");
        }
    }
    

    Lambda式の簡略化
    public class TestLambda02 {
         
    
        public static void main(String[] args) {
         
            ILove love = null;
    
            //1.lambda 
            love = (int a)->{
         
                System.out.println("i love you-->"+a);
            };
    
            // 2. 
            love = (a)->{
         
                System.out.println("i love you-->"+a);
            };
    
            // 3. 
            love = a-> System.out.println("i love you-->"+a);
    
            /*
             :
                lambda , , 。
                 
                 , , 
             */
    
            love.love(520);
        }
    
    }
    
    interface ILove{
         
        void love(int a);
    }