1. 程式人生 > 遊戲 >育碧開啟免費週末《渡神紀 芬尼斯崛起》免費玩

育碧開啟免費週末《渡神紀 芬尼斯崛起》免費玩

Lambda 表示式

  • λ希臘字母表整個排序第十一位的字母,英語名稱為Lambda
  • 避免匿名內部類定義過多
  • 其實質屬於函數語言程式設計的概念
  • 為什麼要使用lambda表示式

    • 避免內部類定義過多

    • 可以讓你的程式碼開起來很簡潔

    • 去掉一堆沒有意義的程式碼,只留下核心的邏輯

  • 也許你會說,我看了Lambda表示式,不但不覺得簡介,反而覺得更亂,看不懂了。那是因為我們還沒有習慣,用的多了看習慣了,就好了。

  • 理解Function Interface(函式式介面)式學習Java8lambda表示式的關鍵所在

  • 函式式介面的定義:

    • 任何介面,如果只包含唯一一個抽象方法,那麼他就是一個函式式介面。

    • Public interface Runnable{

      ​ public abstract void run();

      }

​ 對於函式式介面,我們可以通過lambda表示式來建立該介面的物件.

package com.xiancheng.demo02;

/*
推導Lambda表示式
 */
public class TestLambda {
    //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();



        //4.區域性內部類
        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");
            }
        };
        like.lambda();

        //6.用Lambda簡化
        like = () -> {
            System.out.println("i like lambda5");
        };
        like.lambda();

    }
}
//1.定義一個函式式介面
interface ILike{
    void lambda();
}

//實現類
class Like implements ILike{
    @Override
    public void lambda() {
        System.out.println("i like lambda");
    }
}

介面調

package com.xiancheng.demo02;

public class TestLambda2 {
    public static void main(String[] args) {
        ILove love  = new Love();
        love.Love(2);
    }
}



interface ILove{
    void Love(int a);
}


class Love implements ILove{
    @Override
    public void Love(int a) {
        System.out.println("i love you-->"+2);
    }
}

靜態內部類

package com.xiancheng.demo02;

public class TestLambda2 {

    static class Love implements ILove{
        @Override
        public void Love(int a) {
            System.out.println("i love you-->"+2);
        }
    }

    public static void main(String[] args) {
        ILove love  = new Love();
        love.Love(2);
    }

}

interface ILove{
    void Love(int a);
}

區域性內部類

package com.xiancheng.demo02;

public class TestLambda2 {



    public static void main(String[] args) {

        class Love implements ILove{
            @Override
            public void Love(int a) {
                System.out.println("i love you-->"+2);
            }
        }

        ILove love  = new Love();
        love.Love(2);
    }

}

interface ILove{
    void Love(int a);
}

匿名內部類

package com.xiancheng.demo02;

public class TestLambda2 {



    public static void main(String[] args) {


        ILove love  = new ILove() {
            @Override
            public void Love(int a) {
                System.out.println("i love you-->"+2);

            }
        };
        love.Love(2);
    }

}

interface ILove{
    void Love(int a);
}

Lambda

package com.xiancheng.demo02;

public class TestLambda2 {



    public static void main(String[] args) {


        ILove love = (int a) -> {
            System.out.println("i love you-->"+a);
        };
        love.Love(520);
    }

}

interface ILove{
    void Love(int a);
}

Lambda 簡化

package com.xiancheng.demo02;

public class TestLambda2 {



    public static void main(String[] args) {


        //1.lambda表示簡化
        ILove love = (int a,int b) -> {
            System.out.println("i love you-->"+a);
        };

        //簡化1.引數型別
        love = (a,b)-> {
            System.out.println("i love you-->"+a);
            System.out.println("i love you-->"+"too");
        };

        //簡化括號
        love = (a,b) ->{
            System.out.println("i love you-->"+a);
        };
        //簡化花括號
        love = (a,b) -> System.out.println("i love you-->"+a);


        //總結:
            //lambda表示式只能有一行程式碼的情況系啊才能簡化成為一行,如果有多行,那麼久用程式碼塊包裹。
            //前提是介面為函式式介面
        //多個引數也可以去掉引數型別,要去掉就都去掉,必須加上括號
        love.Love(521,502);
    }

}

interface ILove{
    void Love(int a,int b);
}