国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android 中Lambda表達式的使用實例詳解

2019-12-12 02:57:12
字體:
來源:轉載
供稿:網友

 Android 中Lambda表達式的使用實例詳解

Java8 中著實引入了一些非常有特色的功能,如Lambda表達式、streamAPI、接口默認實現等等。Lambda表達式在 Android 中最低兼容到 Android2.3 系統,兼容性還是不錯的,Lambda表達式本質上是一種匿名方法,它既沒有方法名,也沒有訪問修飾符和返回值類型,使用它編寫的代碼將更加簡潔易讀。

1.Lambda表達式的基本寫法

如果想要在 Android 項目中使用 Lambda表達式 或者 Java8 的其他新特性,首先我們需要安裝Java8版本的JDK,然后在 app/build.gradle 中添加以下配置:

android {  ...  defaultConfig {    jackOptions.enabled = true  }  compileOptions {    sourceCompatibility JavaVersion.VERSION_1_8    targetCompatibility JavaVersion.VERSION_1_8  }}

之后就可以開始使用Lambda表達式了:

比如使用Lambda表達式開啟子線程的寫法是:

// 傳統方式new Thread(new Runnable() {  @Override  public void run() {    // 處理業務邏輯  }}).start();// 使用Lambda表達式new Thread(() -> {  // 處理業務邏輯}).start();

不管是從代碼行數上還是縮進結構上看,Lambda表達式的寫法更加精簡。為什么可以這么寫呢?我們看一下 Runnable 接口的源碼:

public interface Runnable {  void run();}

凡是這種只有一個待實現方法的接口,都可以使用 Lambda表達式的寫法。

2.自定義接口然后使用Lambda表達式

新建一個 MyListener 接口,接口中只有一個待實現方法,和前面唯一不同的是帶有參數和返回值:

public interface MyListener {  String run(String str1, String str2);}

那么使用 Lambda表達式 創建 MyListener 接口的匿名實現方法寫法如下:

MyListener listener = (String str1, String str2) -> {  String result = str1 + str2;  return result;};

另外Java還可以通過上下文自動推斷出 Lambda表達式 中的參數類型,所以還可以進一步簡化:

MyListener listener = (str1, str2) -> {  String result = str1 + str2;  return result;};

3.Android中使用Lambda表達式

Android中點擊事件使用Lambda表達式:

button.setOnClickListener(new View.OnClickListener() {  @Override  public void onClick(View view) {    // 處理點擊事件  }});

使用Lambda表達式后:

button.setOnClickListener((v) -> {  // 處理點擊事件});

另外,當接口只有一個參數時,我們還可以進一步簡化,將參數外面的括號去掉:

button.setOnClickListener(v -> {  // 處理點擊事件});

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洪江市| 长乐市| 马边| 新兴县| 寿阳县| 栾川县| 津南区| 简阳市| 永顺县| 定日县| 正镶白旗| 萝北县| 孙吴县| 西丰县| 滁州市| 莱州市| 锡林郭勒盟| 右玉县| 金堂县| 怀宁县| 邓州市| 资阳市| 美姑县| 扎赉特旗| 乐都县| 都匀市| 深水埗区| 宜阳县| 临沭县| 雷山县| 盐津县| 平果县| 前郭尔| 商南县| 宁强县| 南雄市| 天全县| 宜川县| 宜川县| 西安市| 普定县|