Lambda表達式

Lambda表達式本質上是一種匿名方法,它沒有方法名、沒有修飾符、沒有返回值類型,使得編寫代碼更加簡潔。

只要有一個待實現方法的接口就可以使用Lambda表達式。注意:是只能有一個需要被實現的方法,不是規定接口中只能有一個方法

本質上是將這唯一待實現的方法用來代替接口,或者說是代替在具體業務邏輯代碼中實現接口的匿名類。因爲既然匿名類需要實現這個接口,而這個接口中又只含有唯一一個需要實現的方法,那麼就可以通過此方法直接代替該匿名類了。

例子一:

        //開啓線程傳統寫法
        new Thread(new Runnable() {
            @Override
            public void run() {
                //具體處理邏輯
            }
        }).start();

        //開啓線程 Lambda 表達式
        new Thread(() -> {
            //具體處理偶偶機
        }).start();

例子二:

 自定義一個接口,再使用 Lambda 表達式的方式進行實現。

/**
 * 定義一個接口
 */
public interface MyListener {
    //注意,該方法有返回值,有參數
    String doSomething(String a,int b);
}

 

        //Lambda 表達式寫法
        MyListener myListneer2 = (String a,int b) -> {
            return a + b;
        };

         /*
            還可以精簡成這樣
            這裏,Java 會自動判斷出 a 和 b 的數據類型
         */
        MyListener myListener2 = (a, b) -> {
            return a + b;
        };

  假如有一個方法,需要傳入 MyListener 接口

    public void hello(MyListener mListener) {
        String a = "Hello Lambda";
        int b = 1024;
        String result = mListener.doSomething(a, b);
        Log.d(TAG, "hello: " + result);
    }

 

        //傳統寫法
        hello(new MyListener() {
            @Override
            public String doSomething(String a, int b) {
                return a + b;
            }
        });

        //Lambda 表達式
        hello((a, b) -> {
            return a + b;
        });

例子參考於第一行代碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章