Android Studio中应用Lambda表达式

什么是Lambda表达式


Lambda表达式是Java SE 8中包含的一个新的重要功能。它们提供了一种清晰简明的方法来使用表达式表示一个方法接口。 Lambda表达式还改进了Collection库,使其更容易从集合中遍历,过滤和提取数据。此外,新的并发功能提高了多核环境中的性能。
  当然在Android工程中直接使用JDK 8编译向下兼容还是有问题,你可以通过 Retrolambda 让使用Lambda表达式的Java 8代码运行在Java 7或更低版本上,让Lambda不再专属于Java 8,提高工程师的逼格。

怎么应用到自己的项目中


  • 添加如下一段到到build.gradle中,具体看图。
compileOptions {
       sourceCompatibility JavaVersion.VERSION_1_8  
       targetCompatibility JavaVersion.VERSION_1_8
}
Android Studio中应用Lambda表达式_第1张图片
Paste_Image.png
  • 把下面一段添加到Module中的 build.gradle中,具体看图。
apply plugin: 'me.tatarka.retrolambda'
Android Studio中应用Lambda表达式_第2张图片
Paste_Image.png
  • 把下面一段添加到整个工程的build.gradle中,具体看图。
classpath 'me.tatarka:gradle-retrolambda:3.2.0'
Android Studio中应用Lambda表达式_第3张图片
整个工程的build.gradle中
  • 这样就可以使用Lambda表达式写代码了。

Lambda表达式的使用

代码对比

button.setOnClickListener(new View.OnClickListener() { 
      @Override 
       public void onClick(View v) {
           v.setText("lalala");
       } 
});//原来我们写法
//用Lambda表达式写法
button.setOnClickListener(v -> v.setText("lalala"));

Lambda表达式的例子

(int x, int y) -> x + y                      //接收x和y两个整形参数并返回他们的和
() -> 66                                     //不接收任何参数直接返回66
(String name) -> {System.out.println(name);} //接收一个字符串然后打印出来
(View view) -> {view.setText("lalala");}     //接收一个View对象并调用setText方法

方法引用

class User{
    private String userName;
    public String getUserName() {
        return userName;
    }
    ...
}
 
List users = new ArrayList<>();
Comparator comparator = Comparator.comparing(u -> u.getUserName());
Collections.sort(users, comparator);
 
//我们可以用方法引用替换上面的lambda表达式
Comparator comparator = Comparator.comparing(User::getUserName);

参考资料:

  • http://www.jianshu.com/p/6e400da4a239
  • http://blog.jobbole.com/106564/
  • http://sunfusheng.com/android/2016/03/16/java8-lambda.html?utm_source=tuicool&utm_medium=referral

你可能感兴趣的:(Android Studio中应用Lambda表达式)