Lambda表達式是Java 8的一個新特性,可以替代只有一個函數的接口實現,告別匿名內部類,代碼看起來更簡潔易懂。Lambda表達式同時還提升了對集合的迭代、遍歷、過濾數據的操作。那么在Android Studio中如何使用lambda表達式呢?
項目使用的jdk要為jdk 8或更高版本
修改build.gradle文件,enable jack和設置sourceCompatibility,targetCompatibility為jdk 8
defaultConfig { ... jackOptions { enabled=true } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }
然后在項目中就可以愉快使用lambda表達式了,大家感受下:
public class TestActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test); findViewById(R.id.button1).setOnClickListener(view -> onButton1()); findViewById(R.id.button2).setOnClickListener(view -> onButton2()); } public void onButton1() { Runnable runnable = () -> Toast.makeText(this, "abcd", Toast.LENGTH_SHORT).show(); runnable.run(); } public void onButton2() { Observable.from(Arrays.asList(1, 2, 3, 4, 5)) .filter(integer -> integer % 2 == 0) .map(integer -> integer * integer) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(integer -> Toast.makeText(this, String.valueOf(integer), Toast.LENGTH_SHORT).show()); } }