1.retrolambda使用
Lambda表達式是在JDK 8中開始支持的一種函數(shù)式推導語言,能夠大量減少匿名內(nèi)部類那種冗余的代碼。在Android中,可以大量使用在設(shè)置監(jiān)聽,設(shè)置異步回調(diào)等場景。
1.下載 java8 sdk,并且配置完成
2.在build.gradle中加入編譯的依賴,這會使用retrolambda來編譯Java代碼
<code>
buildscript {
//開始加入
dependencies {
classpath 'me.tatarka:gradle-retrolambda:3.1.0'
}
//結(jié)束插入
}
</code>
同時要加入plugin聲明
<code> apply plugin: 'me.tatarka.retrolambda' </code>
3 . 加入compileOptions,這會讓IDE使用用JAVA8語法解析
<code>
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
</code>
4 . 指定將源碼編譯的級別,,使用下列代碼,會將代碼編譯到兼容1.6的字節(jié)碼格式
<code>
retrolambda {
javaVersion JavaVersion.VERSION_1_6
}
</code>
5 . 添加測試代碼, 對于只有一個方法的接口,java8中可以使用lambda表達式代替,所以我們熟悉的設(shè)定View點擊事件的代碼,只要這樣寫就可以了
<code>v.setOnClickListener(v1 -> Toast.makeText(getActivity(), "clicked", Toast.LENGTH_LONG).show());
</code>
對比之前的寫法,就回到了我們的專題名字,不要太爽!
<code>
v.setOnClickListener(new View.OnClickListener(View v) {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(), "clicked", Toast.LENGTH_LONG).show()
}
});
</code>