android中Lambda表达式写法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liyuali2012/article/details/78627114

java 8 中引入了一些有特色的功能,Lambda表达式是目前唯一可以兼容到低版本Android2.3的,所以学习下,可以在项目中写写更方便的写法。

首先需要在build中配置:

android {
    compileSdkVersion 25
    buildToolsVersion "26.0.1"

    defaultConfig {
        applicationId "com.yuanli.myapplication"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

        //Lambda表达式需要
        jackOptions.enabled = true
    }

    //Lambda表达式需要
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

使用

  1. 凡是只有一个待实现方法的接口,都可以使用Lambda表达式的写法。

线程写法:

    //第一种
    class ThreadOne extends Thread {
        @Override
        public void run() {
            //处理逻辑
        }
    }
    。。。。。。。。。。。。。。。。
    new Thread(()->{
         //处理逻辑
      }).start();
================================================
    //第二种
    class ThreadTwo implements Runnable {
        @Override
        public void run() {
            //处理逻辑
        }
    }
    。。。。。。。。。。。。。。。。
    Runnable runnable=()->{
         //处理逻辑
     };
  1. java可以根据上下文自动判断出Lambda表达式中参数类型
    //自定义接口写法
    public interface MyListenner {
        String doSomething(String a, int b);
    }

    //接受MyListenner参数的方法
    public void Hello(MyListenner myListenner) {
        String a = "Hello Lambda";
        int b = 1024;
        String result = myListenner.doSomething(a, b);
        Log.i(TAG, "Hello: " + result);
    }
    。。。。。。。。。。。。。。。。。。。
    Hello((a, b) -> {
      String result = a + b;
      return result;
    });

    //接口的匿名实现方法
    MyListenner myListenner = (a, b) -> {
        String result = a + b;
        return result;
    };
  1. 点击事件写法
        getView().setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
        getView().setOnClickListener(v -> {

        });

猜你喜欢

转载自blog.csdn.net/liyuali2012/article/details/78627114