欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

在Android Studio中使用Lambda表达式

程序员文章站 2022-05-22 21:18:45
...

前言

Lambda表达式是Java 8的一个新特性,可以替代只有一个函数的接口实现,告别匿名内部类,代码看起来更简洁易懂。 
Lambda表达式同时还提升了对集合的迭代、遍历、过滤数据的操作。 
那么在Android Studio中如何使用lambda表达式呢?

配置

在Android Studio中使用Lambda需要进行适当的配置

安装JDK1.8

安装后,打开CMD输入“java -version”查看当前JDK版本 
在Android Studio中使用Lambda表达式

在app下的build.gradle中使用Java1.8

compileOptions
 {
   sourceCompatibility JavaVersion.VERSION_1_8
   targetCompatibility JavaVersion.VERSION_1_8
 }

在Android Studio中使用Lambda表达式

使用

第一个lambda表达式

比如按钮的点击事件:

  • 一般写法(匿名内部类):

     findViewById(R.id.btn_click).setOnClickListener(new View.OnClickListener() {   
        @Override
        public void onClick(View v) {
            Intent intent=new Intent(MainActivity.this, LambdaExampleActivity.class);
            startActivity(intent);
        }
    });
    

    缺点:

    • 可读性差,不能直接明了的体现我们的意图。
    • 啰嗦,一行逻辑代码却有几行模板代码。
  • lambda表达式:

    findViewById(R.id.btn_click).setOnClickListener(view->
    {
        Intent intent=new Intent(this, LambdaExampleActivity.class);
        startActivity(intent);
    });
    

    优点:

    • 参数的类型可省略
    • Java编译器根据表达式的上下文推导出参数的类型

lambda表达式的结构

  • 参数可以是零个或多个
  • 参数类型可指定,可省略(根据表达式上下文推断)
  • 参数包含在圆括号中,用逗号分隔
  • 表达式主体可以是零条或多条语句,包含在花括号中
  • 表达式主体只有一条语句时,花括号可省略
  • 表达式主体有一条以上语句时,表达式的返回类型与代码块的返回类型一致
  • 表达式只有一条语句时,表达式的返回类型与该语句的返回类型一致

    //零个
    Runnable runnable = () -> System.out.println("no argument");
    //一个
    IntToDoubleFunction intToDoubleFunction = (int x) -> x + 1;
    //两个
    IntBinaryOperator intBinaryOperator = (int x, int y) -> x + y;
    //省略参数类型
    View.OnClickListener oneArgument = view-> Log.d("TAG","one argument");
    //指定参数类型
    View.OnClickListener oneArgument1 = (View view)->Log.d("TAG","one argument");
    //多行语句
    //返回类型是代码块返回的void
    View.OnClickListener multiLine = (View view)->{
        Log.d("TAG","multi statements");
        Log.d("TAG","second line");
    };
    

在Android Studio中使用Lambda表达式

参考Demo

相关标签: Lambda