AS中引入Lambda表达式
来源:互联网 发布:传说之下 知乎 编辑:程序博客网 时间:2024/05/17 01:14
前言
最近项目中考虑使用Rxjava进行项目重构,而jdk1.8中新增的核心特性中的lambda表达式与其结合起来很完美,所以写了这篇文章,简单的介绍下AS中如何使用Lambda表达式.
lambda表达式取代了匿名内部类,取消了模板,允许用函数式风格编写代码,使代码可读性更高,也更简洁,详细介绍请参考
java8 简明介绍
如何在AS中配置lambda?
(1)引入retrolambda插件
(2)应用插件retrolambda
(3)从 maven central 获取最新版本插件
(4)指定java版本8
至此配置完成,下一步就可以在AS中使用了。
1.用lambda表达式实现OnClickListener
Button button = (Button) findViewById(R.id.bt_test1); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "hello eooooo", Toast.LENGTH_SHORT).show(); } });
转化为如下的写法:
button.setOnClickListener(v -> Toast.makeText(MainActivity.this, "hello eooooo", Toast.LENGTH_SHORT).show());
2.用lambda表达式实现Runnable
new Thread(new Runnable() { @Override public void run() { Log.e("aaa","bbbbb"); } }).start();
转变为
new Thread(()->Log.e("aaa","bbbbb")).start();
3.Java 8 允许你通过::关键字获取方法或者构造函数的的引用。
public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }}
public interface PersonFactory <P extends Person> { P create(String firstName, int age);}
private void test3(){ PersonFactory<Person> personFactory = Person::new; Person person = personFactory.create("tom",15); Log.e("person:",person.getName()+"::"+person.getAge()); }
我们通过Person::new来创建一个Person类构造函数的引用。Java编译器会自动地选择合适的构造函数来匹配PersonFactory.create函数的签名,并选择正确的构造函数形式。
更多用法可以查看
Java8 lambda表达式10个示例
gradle-retrolambda官网
0 0
- AS中引入Lambda表达式
- Android开发中如何引入Lambda表达式?
- 如何在AS中使用lambda表达式
- 在AS中使用lambda表达式
- Lambda表达式的引入
- android中lambda表达式的使用,以及如何引入
- [FAQ]为什么引入lambda表达式
- Java8引入的lambda表达式
- Android Studio 引入Lambda表达式
- Java8为什么引入Lambda表达式
- lambda表达式介绍以及Android Studio引入lambda
- C#中Lambda表达式
- C# 中Lambda表达式
- C++中Lambda表达式
- C++中Lambda表达式
- C#中Lambda表达式
- C++中Lambda表达式
- C++中lambda表达式
- 图解HTTP笔记之第二章:简单的http协议
- Vue+Vux学习案例(四)—构建开源中国微信版(增加资讯详情,集成Vuex)
- 视频+代码+资料:Nils Reimers面向NLP的深度学习(Theano/Lasagne)系列教程
- WebSocket
- 按前序与中序遍历将二叉树线索化并输出
- AS中引入Lambda表达式
- VS2010中的MFC工程名修改【转】
- 异常处理:ava.io.IOException:read failed: EBADF (Bad file number)
- Apache转发配置
- SystemServer源码分析
- Xamarin——mac os x下环境的搭建
- nodejs async parallel 函数传参数,执行不固定项函数
- 刚体在三维空间的旋转(关于旋转矩阵、DCM、旋转向量、四元数、欧拉角)
- Android产品研发(三)-->基类Activity