Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 使用 Lambda 取代 Android 中的匿名類

使用 Lambda 取代 Android 中的匿名類

編輯:關於Android編程

Lambda是第十一個希臘字母,大寫Λ,小寫λ,額,跑題了…Lambda表達式 是Java8的新特性之一:

  1. Lambda表達式
  2. 函數式接口
  3. 流API
  4. 默認方法
  5. 新的Date
  6. Time API

Lambda表達式 取代了匿名類 ,取消了模板,允許用函數式風格編寫代碼。

由於最近接觸了RxJava,遇到了Lambda,立馬就喜歡上了~所以就學習了一下.

本文主要介紹一下Lambda在Android中替代匿名類的部分使用場景.

在Android中使用Lambda

gradle-retrolambda

A gradle plugin for getting java lambda support in java 6, 7 and android

在Android中使用我們需要使用這個插件,按照配置配置完就行.

實戰使用

由於Lambda 可以取代匿名類,所以我們先來挑幾個匿名類練練手.

這裡先簡單的提及一下Lambda的語法:() -> {}咋一看可能覺得這個什麼鬼啊?看不懂啊!

不急,看幾個例子先~

設置監聽事件

Android中我們設置監聽一般這麼寫:

mFab.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    doSomething();
   }
  });

這麼寫AS會提示說匿名類new View.OnClickListener()能被Lambda代替:

提示

那麼用Lambda可以如何寫呢?

mFab.setOnClickListener(v->doSomething());

看到了麼?

整個匿名內部類被v->doSomething()給代替了.

是不是非常簡單?

Ps: 本例子中的`v`代表onClick傳遞的參數v,參數不能省略,但是可以隨意命名.

實現Runnable

在Android中我們起個線程一般這麼寫:

new Thread(new Runnable() {
   @Override
   public void run() {
    doSomething();
   }
  }).start();

而使用Lambda表達式的話可以這麼寫:

new Thread(() -> doSomething()).start();

另外實例化Runnable成員變量也可以這麼寫:

Runnable runnable = ()->doSomething();

看完這兩個例子是否對Lambda感興趣了呢?後續我還會繼續學習,有興趣的請繼續關注~

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved