Android中如何使用Lambda表達式高效開發

轉載請註明出處:http://blog.csdn.net/linglongxin24/article/details/53888504
本文出自【DylanAndroid的博客】 java


Android中如何使用Lambda表達式高效開發

當咱們在Android開發中,使用Android Studio時,去寫一個線程或者button的點擊事件時,寫完以後使用代碼摺疊功能,能夠看到以下預覽:
android

摺疊代碼

這個其實就是Lambda表達式的寫法。咱們發現,對於咱們開發來講,不會去關心這個類以及方法,只會關心這個方法內的代碼,因此其餘的多餘代碼就顯得多餘了。那麼,到底具體如何使用呢?

一.在build.gradle中加入以下配置

jackOptions{
            enabled true
        }
compileOptions{
   sourceCompatibility JavaVersion.VERSION_1_8
   targetCompatibility JavaVersion.VERSION_1_8
 }複製代碼

摺疊代碼

#二.使用lambda表達式的三種寫法git

1.第一種方式,無參數+語句(代碼塊):適用於匿名內部類中方法無參數的狀況
/** * 第一種方式,無參數+語句(代碼塊):適用於匿名內部類中方法無參數的狀況 * () -> 語句 * 或 * () -> {代碼塊} **/
    private void threadTest() {
        /**普通寫法**/
        new Thread(new Runnable() {
            @Override
            public void run() {

            }
        }).start();
        /**使用lambda表達式寫法**/
        new Thread(() -> Log.d(TAG, "this is a lambda Thread")).start();
    }複製代碼
2.第二種方式,有參數+語句:適用於匿名內部類中方法只有一個參數的狀況
/** * 第二種方式,有參數+語句:適用於匿名內部類中方法只有一個參數的狀況 * 方法參數 -> 語句 * 或 * 方法參數 -> {代碼塊} */
    private void setOnClick() {
        /**普通寫法**/
        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d(TAG, "this is a general onClick");
            }
        });
        /**使用lambda表達式寫法**/
        findViewById(R.id.button).setOnClickListener(v -> Log.d(TAG, "this is a lambda onClick"));
    }複製代碼
3.第三種方式,有參數+代碼塊:適用於匿名內部類中方法不止一個參數的狀況
/** * 第三種方式,有參數+代碼塊:適用於匿名內部類中方法不止一個參數的狀況 * (參數1, 參數2) -> 語句 * 或 * (參數1, 參數2) -> {代碼塊} */
    private void setOnChecked() {
        CheckBox checkBox = (CheckBox) findViewById(R.id.checkBox);
        /**普通寫法**/
        checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                Log.d(TAG, "this is a general onCheckedChanged");
            }
        });
        /**使用lambda表達式寫法**/
        checkBox.setOnCheckedChangeListener((buttonView, isChecked) -> {
            Log.d(TAG, "this is a lambda onCheckedChanged");
            Log.d(TAG, "this is a lambda onCheckedChanged_isChecked=" + isChecked);
        });
    }複製代碼

GitHub

相關文章
相關標籤/搜索