【JAVA】Lambdaインタフェース&関数レベルインタフェース

9696 ワード

Lambdaインタフェースは関数レベルインタフェースにのみ使用され、匿名クラスでよく使用されますが、関数レベルインタフェース--インタフェースには関数のインタフェースが1つしかありません.インタフェースを識別します.インタフェースには何の関数もないインタフェースです.
以上は関連概念の簡単な説明にすぎず、具体的な解釈は具体的なコードによって説明しなければならない.
//     
interface T1 {
    void t();
}

//           
interface T2 {
    //        a
    int t(int a);
}

//           
interface T3 {
    //        a b
    int t(int a,int b);
}

/*       Lambda    */
public class Lambda {
    //Lambda          ,          ?

    //     :             。
    //    :             。


    public static void main(String[] args) {
//                new     ,
//                    。
//                     ,
//            Alt+Enter         。
//                     ,   T       。
//          ,  new       T         。

//                      ,
//            List,      ,         。

//        T a=new T() {
//            @Override
//            public void t() {
//                System.out.println("Hello");
//            }
//        };


        //       ,          。
        //     ,    ,            。
        //            ,           ,
        //                   。
        //   "  "   ,
        //                   。
        //               ,
        //            ,       。

        //     T1     
        T1 a = () -> System.out.println("Hello");
        //           ,       。
        //      t()   。
        //     , Lambda       ,      。
        //  ,            
        a.t();


        //      ,         ,      。

        //     T1     
        T1 b = () -> {
            System.out.println("Hello");
            System.out.println("Hello");
        };


        //             ,           ,
        //        ,       。
        //              ,       。

        //  ,             。
        //                      ,
        //              。

        //     T2     
        T2 c = aa -> aa * 2;
        System.out.println(c.t(20));
        //               ,
        //         ,          ,
        //          。


        //              ,        。
        //      T2     
        T2 d = cc -> { cc *= 2;cc += 2;return cc; };
        System.out.println(d.t(30));


        //  ,          
        //      T3     
        T3 e = (ab, ba) -> ab + ba;
        System.out.println(e.t(20, 30));
    }
}