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
}
Paste_Image.png
  • 把下面一段添加到Module中的 build.gradle中,具体看图。
apply plugin: 'me.tatarka.retrolambda'
Paste_Image.png
  • 把下面一段添加到整个工程的build.gradle中,具体看图。
classpath 'me.tatarka:gradle-retrolambda:3.2.0'
整个工程的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<User> users = new ArrayList<>();
Comparator<User> comparator = Comparator.comparing(u -> u.getUserName());
Collections.sort(users, comparator);
 
//我们可以用方法引用替换上面的lambda表达式
Comparator<User> comparator = Comparator.comparing(User::getUserName);

参考资料:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容