欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android 中Lambda表達(dá)式的使用實(shí)例詳解

 更新時(shí)間:2017年05月02日 17:04:48   投稿:lqh  
這篇文章主要介紹了 Android 中Lambda表達(dá)式的使用實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下

 Android 中Lambda表達(dá)式的使用實(shí)例詳解

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

1.Lambda表達(dá)式的基本寫法

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

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

之后就可以開始使用Lambda表達(dá)式了:

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

// 傳統(tǒng)方式
new Thread(new Runnable() {
  @Override
  public void run() {
    // 處理業(yè)務(wù)邏輯
  }
}).start();

// 使用Lambda表達(dá)式
new Thread(() -> {
  // 處理業(yè)務(wù)邏輯
}).start();

不管是從代碼行數(shù)上還是縮進(jìn)結(jié)構(gòu)上看,Lambda表達(dá)式的寫法更加精簡(jiǎn)。為什么可以這么寫呢?我們看一下 Runnable 接口的源碼:

public interface Runnable {
  void run();
}

凡是這種只有一個(gè)待實(shí)現(xiàn)方法的接口,都可以使用 Lambda表達(dá)式的寫法。

2.自定義接口然后使用Lambda表達(dá)式

新建一個(gè) MyListener 接口,接口中只有一個(gè)待實(shí)現(xiàn)方法,和前面唯一不同的是帶有參數(shù)和返回值:

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

那么使用 Lambda表達(dá)式 創(chuàng)建 MyListener 接口的匿名實(shí)現(xiàn)方法寫法如下:

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

另外Java還可以通過上下文自動(dòng)推斷出 Lambda表達(dá)式 中的參數(shù)類型,所以還可以進(jìn)一步簡(jiǎn)化:

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

3.Android中使用Lambda表達(dá)式

Android中點(diǎn)擊事件使用Lambda表達(dá)式:

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

使用Lambda表達(dá)式后:

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

另外,當(dāng)接口只有一個(gè)參數(shù)時(shí),我們還可以進(jìn)一步簡(jiǎn)化,將參數(shù)外面的括號(hào)去掉:

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

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

相關(guān)文章

最新評(píng)論