使用 Lambda 在 Android 中的替代匿名類
Lambda
Lambda是第十一個希臘字母,大寫Λ,小寫λ,額,跑題了...Lambda表達式 是Java8的新特性之一:
- Lambda表達式
- 函數式接口
- 流API
- 默認方法
- 新的Date
- 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感興趣了呢?后續我還會繼續學習,有興趣的請繼續關注~
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!