使用 Lambda 取代 Android 中的匿名類
Lambda
Lambda是第十一個希臘字母,大寫Λ,小寫λ,額,跑題了…Lambda表示式 是Java8的新特性之一:
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感興趣了呢?後續我還會繼續學習,有興趣的請繼續關注~
相關文章
- lambda匿名函式使用中的坑函式
- Python中的匿名函式-lambdaPython函式
- C#中的委託,匿名方法和Lambda表示式C#
- 抽象類和匿名方法的使用抽象
- scala中的匿名子類實現
- java中的匿名內部類總結Java
- Android中如何使用Lambda表示式高效開發Android
- Android Studio中如何支援使用Lambda表示式Android
- 匿名函式(lambda)詳解 C++函式C++
- 初識Lambda表示式(匿名函式)函式
- Java中的匿名內部類及內部類的二三事Java
- Java中Lambda表示式的使用Java
- C#特性-匿名方法和Lambda表示式C#
- 匿名內部類中關於new Runnable ( )
- 基礎拾遺---委託,匿名函式,lambda函式
- PHP 新增匿名類PHP
- 匿名內部類
- Java類與匿名內部類Java
- Java8學習系列之匿名函式LambdaJava函式
- Python函式與lambda 表示式(匿名函式)Python函式
- 讀取ViewBag匿名類View
- 匿名內部類理解
- Java的特殊類用法:檔案類、內部類、本地類、匿名類Java
- Java內部類和匿名內部類的用法Java
- js中匿名函式的使用簡單介紹JS函式
- 在Android Studio中使用Lambda表示式Android
- Python中lambda使用簡易教程Python
- Kappa架構取代Hadoop的Lambda架構成為主流 - WaehnerAPP架構Hadoop
- python基礎(補充):lambda匿名函式,用了的,都說好!Python函式
- 匿名內部類泛型泛型
- 在spring中獲取代理物件代理的目標物件工具類Spring物件
- Python中Lambda使用要注意的幾個地方Python
- js中的匿名函式JS函式
- Android 中的DisplayMetrics類的用法Android
- java培訓教程:什麼是匿名內部類?怎樣建立匿名內部類?Java
- Java內部類詳解--匿名內部類Java
- 使用內部和匿名類最佳化Java程式碼(轉)Java
- Java 中的 Lambda 表示式Java