【Android】Lambda表达式
来源:互联网 发布:网络交换机的设置 编辑:程序博客网 时间:2024/06/16 22:30
本文主要分以下几个模块:
- 什么是lambda
- Android如何使用
- lambda语法和结构
- demo
================================================================
1.什么是lambda
Lambda 表达式,也被称为闭包,是为开发者提供用简单和紧凑的方式表示数据的匿名函数。
Lambda是一种匿名表达式,retrolambda使得Android能使用lambda特性
2.Android如何使用
在android中是使用Retrolambda的gradle插件,就能在代码中使用lambda了。
- Android Studio配置Retrolambda
Android Studio自动生成lambda
Android Studio配置Retrolambda
(1).lambda需要安装JDK8,最新版本下载地址点这里:jdk-8u91
(2).build.gradlebuildscript {
repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.5.0' //加上下面这句依赖,会使用retrolambda来编译Java代码 classpath 'me.tatarka:gradle-retrolambda:3.2.4' }
}
(3).app/build.gradle
apply plugin: ‘com.android.application’
apply plugin: ‘me.tatarka.retrolambda’//加上这句加,入plugin声明
android {
……
compileOptions {//使用JAVA8语法解析
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
retrolambda {//指定将源码编译的级别,使用下列代码,会将代码编译到兼容1.6的字节码格式
javaVersion JavaVersion.VERSION_1_6
}Android Studio自动生成lambda
1.当配置Retrolambda成功后,Android Studio会有提示,按Alt+Enter键
2.点击替换,这样就能自动生成,使用lambda了。
3.lambda语法和结构
语法结构
input -> body
intput种类
- 无输入 void
() -> body
new Thread(new Runnable() { @Override public void run() { Log.d("test", "retrolambda表达式"); } });//使用lambda表达式new Thread(() -> Log.d("test", "retrolambda表达式"));
- 一个参数输入
x -> body
view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d("test", "retrolambda表达式"); }});//使用lambda表达式view.setOnClickListener(v -> Log.d("test", "retrolambda表达式"));
- 多个参数输入
(x, y) -> x + y;
List<String> names = Arrays.asList("张三", "李四", "王二", "麻子");Collections.sort(names, new Comparator<String>() { @Override public int compare(String a, String b) { return b.compareTo(a);} });Log.d("test", name.toString());//使用lambda表达式List<String> names = Arrays.asList("张三", "李四", "王二", "麻子");Collections.sort(names, (a, b) -> b.compareTo(a));Log.d("test", name.toString());
- 不省略型別
(int x, int y) -> x + y;
body 种类
啥都没做
() -> {}
单行没有返回值,单行可省略{}
(x, y) -> x + y;
单行有返回值,单行可省略{}
//注意没有分号结尾
(x, y) -> x + yObservable.just("test", "lambda") .map(new Func1<String, String>() { @Override public String call(String s) { return s.toUpperCase(); } });//使用lambda表达式Observable.just("test", "lambda") .map(s -> s.toUpperCase());
多行不需要有返回值
(a, b) ->{
int x = 0 ;
int y = 1;
Log.d("test", x+y);
}多行需要有返回值
(a, b) ->{
int x = 0 ;
int y = 1;
return x+y;
}
4.Demo
gitHub
- 【Android】Lambda表达式
- 【android】 lambda表达式
- lambda 表达式 android
- Android Lambda表达式
- Android 中使用Lambda表达式
- 在android使用lambda表达式
- Android中使用lambda表达式
- Android中使用lambda表达式
- Android studio使用lambda表达式
- Android Studio 使用Lambda表达式
- Android Studio 使用 Lambda表达式
- Android 中使用lambda表达式
- Android 中使用Lambda表达式
- Android Studio 引入Lambda表达式
- Android 中使用Lambda表达式
- Android 项目使用Lambda表达式
- Android Studio使用Lambda表达式
- android studio 使用lambda表达式
- android报找不到so的错误
- android 主线程是线程不安全的
- C# 设置程序随机启动
- 在北京外地农村户口和城镇户口五险一金的区别?
- 抽象工厂模式
- 【Android】Lambda表达式
- 我为什么要写博客--写在从业一周年
- linux线程之间的通信
- Eclipse 'The default workspace is in use or cannot be created'
- Fragment 与 Activity 生命周期对比
- vc 获取U盘盘符
- Linux运维人员需要掌握一门编程语言吗?
- Android实现点击AlertDialog上按钮时不关闭对话框的方法
- Erlang常用类型转换