AS中引入Lambda表达式

前言

最近项目中考虑使用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
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值