Lambda表達(dá)式的語(yǔ)法
基本語(yǔ)法:
(parameters) -> expression
或
(parameters) ->{ statements; }
Lambda表達(dá)式是在JDK 8中開(kāi)始支持的一種函數(shù)式推導(dǎo)語(yǔ)言,能夠大量減少匿名內(nèi)部類那種冗余的代碼。在Android中,可以大量使用在設(shè)置監(jiān)聽(tīng),設(shè)置異步回調(diào)等場(chǎng)景。
平時(shí)用androidstudio開(kāi)發(fā)android,確實(shí)寫回調(diào)的時(shí)候,匿名的內(nèi)部類寫的代碼讀起來(lái)不直觀!
retrolambda插件解決了這個(gè)問(wèn)題
1.Project 的頂層 gradle文件配置classpath
buildscript {
...
dependencies {
...
classpath 'me.tatarka:gradle-retrolambda:3.1.0'
}
}
2.Module的gradle文件配置
加入聲明
apply plugin: 'me.tatarka.retrolambda'
在android{ ... }里加入
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
看看寫匿名類的時(shí)候

看到那波浪線的提示沒(méi)有,匿名程式new Func1 ()能夠用lambda代替,不會(huì)也沒(méi)關(guān)系A(chǔ)lt+Enter

然后簡(jiǎn)化之后的

簡(jiǎn)化前5行,簡(jiǎn)化后一行,對(duì)比就出來(lái)了!
一個(gè)參數(shù) ,一個(gè)表達(dá)式,很爽!
再看看
啟動(dòng)一個(gè)線程:
new Thread(() -> System.out.println("Hello RxJava !")).start();
排序:
String[] expression = {"abc", "bcd", "dbe"};
Arrays.sort(expression, (String s1, String s2) -> (s1.compareTo(s2)));