在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版本
在app下的build.gradle中使用Java1.8
compileOptions
{
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
使用
第一个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"); };
推荐阅读