Lambda 表達式(一)

Lambda 表達式”(lambda expression)是一個匿名函數,Lambda表達式基於數學中的λ演算得名,直接對應於其中的lambda抽象(lambda abstraction),是一個匿名函數,即沒有函數名的函數。Lambda表達式可以表示閉包(注意和數學傳統意義上的不同)。

Java 8的一個大亮點是引入Lambda表達式,使用它設計的代碼會更加簡潔。當開發者在編寫Lambda表達式時,也會隨之被編譯成一個函數式接口。下面這個例子就是使用Lambda語法來代替匿名的內部類,代碼不僅簡潔,而且還可讀。

這麼簡單好用的東西,可遺憾的是Android Studio本身並不支持Lambda,所以我們第一步是配置環境

 

添加插件

1. projectbuild.gradle添加紅框內容

 

2. Moduleapp)的build.gradle中添加紅框內容

 

 

 

使用對比:

 

沒有使用Lambda的老方法:

 Button button = new Button(this);

        button.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                Toast.makeText(Logo.this, "圖個泡泡", Toast.LENGTH_SHORT).show();

            }

        });

 

使用Lambda

 

 button.setOnClickListener((v)->{

            Toast.makeText(Logo.this, "圖個泡泡", Toast.LENGTH_SHORT).show();

        });

 

讓我們來看一個更明顯的例子。

不採用Lambda的老方法:

 Runnable runnable = new Runnable() {

            @Override

            public void run() {

                    Toast.makeText(Logo.this, "圖個泡泡", Toast.LENGTH_SHORT).show();

            }

        };

使用Lambda

runnable = ()->{

            Toast.makeText(Logo.this, "圖個泡泡", Toast.LENGTH_SHORT).show();

        };

 

正如你所看到的,使用Lambda表達式不僅讓代碼變的簡單、而且可讀、最重要的是代碼量也隨之減少很多。然而,在某種程度上,這些功能在Scala等這些JVM語言裏已經被廣泛使用。


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