美文网首页
android studio中使用Lambda

android studio中使用Lambda

作者: 水言 | 来源:发表于2017-07-31 09:37 被阅读2208次

“Lambda 表达式”(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。

JAVA中Lambda表达式

Java 8的一个大亮点是引入Lambda表达式,使用它设计的代码会更加简洁。当开发者在编写Lambda表达式时,也会随之被编译成一个函数式接口。下面这个例子就是使用Lambda语法来代替匿名的内部类,代码不仅简洁,而且还可读。

//没有使用Lambda
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
System.out.println("Actiondetected");
}
})
//使用Lambda:
button.addActionListener(()->{ 
System.out.println("Actiondetected");
});

//不采用Lambda的老方法:
Runnable runnable1=new Runnable(){
@Override
public void run(){
System.out.println("RunningwithoutLambda");
}
};
//使用Lambda:
Runnable runnable2=()->{
System.out.println("RunningfromLambda");
};

Java 8 Lambda使用更多使用参考

Android Studio使用Lambda

Android Studio项目使用的jdk要为jdk 8或更高版本

修改build.gradle文件,enable jack和设置sourceCompatibility,targetCompatibility为jdk 8

defaultConfig {
    jackOptions {
      enabled=true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
//例子:
        Runnable runnable = () -> Toast.makeText(this, "abcd", Toast.LENGTH_SHORT).show();
        runnable.run();
        btn = (Button) findViewById(R.id.btn);
        btn.setOnClickListener(v -> Toast.makeText(getApplicationContext(), "test",    Toast.LENGTH_LONG).show());

RxJava使用Lambda

 Observable.just("this is first string", "this is second")
                .compose(this.bindUntilEvent(ActivityEvent.DESTROY)).subscribe(s -> Log.e(TAG, s));

 Observable.from(Arrays.asList(1, 2, 3, 4, 5))
                .filter(integer -> integer % 2 == 0)
                .map(integer -> integer * integer)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(integer -> Toast.makeText(this, String.valueOf(integer), Toast.LENGTH_SHORT).show());

参考:
http://blog.csdn.net/ioriogami/article/details/12782141/
https://baike.baidu.com/item/Lambda%E8%A1%A8%E8%BE%BE%E5%BC%8F/4585794?fr=aladdin

相关文章

网友评论

      本文标题:android studio中使用Lambda

      本文链接:https://www.haomeiwen.com/subject/wpyoqxtx.html