Lambda表达式:

“匿名类的一个问题是,如果匿名类的实现非常简单(例如仅包含一个方法的接口),则匿名类的语法可能看起来笨拙且不清楚。在这些情况下,您通常试图将功能作为参数传递给另一种方法,例如,当某人单击按钮时应采取什么措施。 Lambda表达式使您能够执行此操作,将功能视为方法参数,或将代码视为数据”
这是Lambda表达式的文档解释,简单的来说就是简化匿名内部类

只能简化有函数接口的匿名内部类

通俗点说,Lambda表达式是用来简化函数接口的表达式
简化了什么呢?

  1. 无参可以简化接口名和函数名
  2. 带着参数可以简化参数类型
    例子:

没有参数时

1
2
3
4
//创建Runnable对象
Runnable runnable=()->{

}

当函数体表达式有多行的时候,可以用{}来在里面写

1
2
3
4
5
6
7
8
9
10
11
12
//开启线程
//原写法
new Thread(new Runnable(){
@Obverride
public void run(){
System.out.println("Thread run")
}
}).start
//Lambda表达式
new Thread(
()->System.out.println("Thread run()")
).start();

带有参数的时候

一般来说,带有参数的时候省略参数的类型,只写参数的名称

1
2
3
View.OnClickListener listener = view->{

};