使用 Lambda 取代 Android 中的匿名類
Lambda是第十一個(gè)希臘字母,大寫Λ,小寫λ,額,跑題了…Lambda表達(dá)式 是Java8的新特性之一:
- Lambda表達(dá)式
- 函數(shù)式接口
- 流API
- 默認(rèn)方法
- 新的Date
- Time API
Lambda表達(dá)式 取代了匿名類 ,取消了模板,允許用函數(shù)式風(fēng)格編寫代碼。
由于最近接觸了RxJava,遇到了Lambda,立馬就喜歡上了~所以就學(xué)習(xí)了一下.
本文主要介紹一下Lambda在Android中替代匿名類的部分使用場(chǎng)景.
在Android中使用Lambda
gradle-retrolambda
A gradle plugin for getting java lambda support in java 6, 7 and android
在Android中使用我們需要使用這個(gè)插件,按照配置配置完就行.
實(shí)戰(zhàn)使用
由于Lambda 可以取代匿名類,所以我們先來(lái)挑幾個(gè)匿名類練練手.
這里先簡(jiǎn)單的提及一下Lambda的語(yǔ)法:() -> {}咋一看可能覺(jué)得這個(gè)什么鬼啊?看不懂啊!
不急,看幾個(gè)例子先~
設(shè)置監(jiān)聽事件
Android中我們?cè)O(shè)置監(jiān)聽一般這么寫:
mFab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { doSomething(); } });
這么寫AS會(huì)提示說(shuō)匿名類new View.OnClickListener()能被Lambda代替:
提示
那么用Lambda可以如何寫呢?
mFab.setOnClickListener(v->doSomething());
看到了么?
整個(gè)匿名內(nèi)部類被v->doSomething()給代替了.
是不是非常簡(jiǎn)單?
Ps: 本例子中的`v`代表onClick傳遞的參數(shù)v,參數(shù)不能省略,但是可以隨意命名.
實(shí)現(xiàn)Runnable
在Android中我們起個(gè)線程一般這么寫:
new Thread(new Runnable() { @Override public void run() { doSomething(); } }).start();
而使用Lambda表達(dá)式的話可以這么寫:
new Thread(() -> doSomething()).start();
另外實(shí)例化Runnable成員變量也可以這么寫:
Runnable runnable = ()->doSomething();
看完這兩個(gè)例子是否對(duì)Lambda感興趣了呢?后續(xù)我還會(huì)繼續(xù)學(xué)習(xí),有興趣的請(qǐng)繼續(xù)關(guān)注~
- Kotlin基礎(chǔ)教程之伴生對(duì)象,getter,setter,內(nèi)部,局部,匿名類,可變參數(shù)
- java 中使用匿名類直接new接口詳解及實(shí)例代碼
- Java中匿名類的兩種實(shí)現(xiàn)方式
- java 內(nèi)部類(匿名類,匿名對(duì)象,靜態(tài)內(nèi)部類)詳解及實(shí)例
- PHP7匿名類用法分析
- 全面了解Java中的內(nèi)部類和匿名類
- 深入講解C#編程中嵌套類型和匿名類型的定義與使用
- 詳細(xì)解讀C++編程中的匿名類類型和位域
- ASP.NET中實(shí)現(xiàn)根據(jù)匿名類、datatable、sql生成實(shí)體類
- Java通過(guò)匿名類來(lái)實(shí)現(xiàn)回調(diào)函數(shù)實(shí)例總結(jié)
相關(guān)文章
Flutter利用ORM框架管理數(shù)據(jù)庫(kù)詳解
使用?ORM?框架最大的好處是簡(jiǎn)化了數(shù)據(jù)庫(kù)維護(hù)的代碼量,使得我們可以專注于業(yè)務(wù)代碼實(shí)現(xiàn)。本篇,我們看看如何使用ORM框架管理數(shù)據(jù)庫(kù)版本遷移,需要的可以參考一下2023-04-04Android3.0 ActionBar導(dǎo)航標(biāo)題欄使用解析
這篇文章主要為大家詳細(xì)解析了Android3.0 ActionBar導(dǎo)航標(biāo)題欄的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01Android EditText限制輸入字符的方法總結(jié)
這篇文章主要介紹了 Android EditText限制輸入字符的方法總結(jié)的相關(guān)資料,這里提供了五種方法來(lái)實(shí)現(xiàn)并進(jìn)行比較,需要的朋友可以參考下2017-07-07Android Notification.Builder通知案例分享
這篇文章主要為大家分享了Android Notification.Builder通知案例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10android自定義Camera實(shí)現(xiàn)錄像和拍照
這篇文章主要為大家詳細(xì)介紹了android自定義Camera實(shí)現(xiàn)錄像和拍照功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05Flutter onTap中讓你脫穎而出的5條規(guī)則
這篇文章主要為大家介紹了Flutter onTap中讓你脫穎而出的5條規(guī)則,小事情決定了你的熟練程度,這些小細(xì)節(jié)的有趣之處在于它們的豐富性2023-11-11Android實(shí)現(xiàn)完整游戲循環(huán)的方法
這篇文章主要介紹了Android實(shí)現(xiàn)完整游戲循環(huán)的方法,以實(shí)例代碼形式較為詳細(xì)的分析了Android游戲循環(huán)的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10Android根據(jù)電話號(hào)碼獲得聯(lián)系人頭像實(shí)例代碼
這篇文章主要介紹了Android根據(jù)電話號(hào)碼獲得聯(lián)系人頭像實(shí)例代碼,是Android程序開發(fā)中非常重要的技巧,需要的朋友可以參考下2014-09-09