Andorid Studio中使用lambda的配置

来源:互联网 发布:mac os操作系统教程 编辑:程序博客网 时间:2024/05/29 07:51

retrolambda在Android studio中的使用

概述

JDK升级到1.8以后就可以使用lambda表达式了,这个表达式让代码变得更加的简洁更加的高逼格,接下来就讲一讲如何在Androidstudio中使用lambda。android studio要使用lambda有两种办法一种是使用官方的jack lambda插件一种是使用非官方但很牛叉的retrolambda。

1.jack -lambda

在model.gradle中的添加引用

android {    compileSdkVersion 24    buildToolsVersion "24.0.3"    defaultConfig {        applicationId "io.github.wuxinxi.databinding"        minSdkVersion 15        targetSdkVersion 24        versionCode 1        versionName "1.0"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"        jackOptions{            enabled true//我添加的        }    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }    //我添加的    compileOptions {        sourceCompatibility 1.8        targetCompatibility 1.8    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

配置好之后sysnc即可,接下来就可以在代码中尽情的使用lambda表达式了。

 Button button = (Button) findViewById(R.id.button);        button.setOnClickListener(v -> {            Log.d(TAG, "tag");        });
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

2.retrolambda

retrolambda就要在项目的build.gradle中进行配置了

uildscript {    repositories {        jcenter()    }    dependencies {        classpath 'com.android.tools.build:gradle:2.2.0'        classpath 'me.tatarka:gradle-retrolambda:3.2.5'//retorlambda插件        // NOTE: Do not place your application dependencies here; they belong        // in the individual module build.gradle files    }}allprojects {    repositories {        jcenter()        apply plugin: 'me.tatarka.retrolambda'//我添加的    }}task clean(type: Delete) {    delete rootProject.buildDir}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

接下来就要为每个model中配置一下jdk的版本了

android {    compileSdkVersion 24    buildToolsVersion "24.0.3"    defaultConfig {        applicationId "io.github.wuxinxi.databinding"        minSdkVersion 15        targetSdkVersion 24        versionCode 1        versionName "1.0"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }    //我添加的    compileOptions {        sourceCompatibility JavaVersion.VERSION_1_8        targetCompatibility JavaVersion.VERSION_1_8    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

3.jack与retrolambda

最近DataBinding比较火但是如果你想同时使用lambda表达式又要使用DataBinding就要慎重了,jack-lambda跟DataBinding存在不兼容,所以只能选择非官方的retrolambda。

retrolambda是 Java 5/6/7 中对Java8 Lambda 表达式的非官方兼容方案。说白了就是换汤不换药只是改了一种编码方式。

原创粉丝点击