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

首頁 > 系統 > Android > 正文

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

2019-10-23 18:29:38
字體:
來源:轉載
供稿:網友

 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 -> {  // 處理點擊事件});

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


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 托克托县| 临汾市| 略阳县| 西和县| 阜城县| 汕头市| 涞源县| 苏尼特右旗| 湖北省| 苏州市| 鄂伦春自治旗| 固始县| 宁津县| 贵德县| 民丰县| 屯昌县| 博罗县| 鄢陵县| 崇左市| 岳西县| 托克逊县| 临邑县| 宣汉县| 宜兰县| 大足县| 兰州市| 毕节市| 神池县| 隆子县| 平乡县| 叙永县| 宣化县| 古交市| 博兴县| 长泰县| 通海县| 霞浦县| 阿巴嘎旗| 霍州市| 玛纳斯县| 舟曲县|