lambda
lambda表达式的标准格式:
由三部分组成
- 1.一些参数
- 2.一个箭头
- 3.一段代码
格式:
(参数列表->{一些重写的方法代码};
解释说明格式
():接口中的抽象方法的参数列表,没有参数,就空着;有参数就写出参数,多个参数使用逗号分隔
->:传递的意思,把参数传递给方法体{}
{}:;重写接口的抽象方法的方法体
注意点:
- 使用Lambda必须具有接口,且要求接口中有且仅有一个抽象方法
- 无论jdk内置的runnable、comparator接口还是自定义的接口,只有当接口的抽象方法存在且唯一时,才可以用lambda,
- 2.是由lambda必须具有上下文推断。
也就是方法中的参数或局部变量类型必须是为lambda对应的接口类型,才能使用lambda作为该接口的实列
(上下文可以推导出来的内容,就可以省略)lambda可以省略的内容:
(参数列表:)括号中的参数列表类型,可以省略不写
(参数列表):括号中的参数如果只有一个,那么类型和()都可以省略
(一些代码)如果只有一行,无论是否有放回值,都可以省略({},return,;)注意点,省略一起省略
代码介绍(以线程的创建为例)
public class Demo02lambda {
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "创建新线程");
}
}).start();
//使用lambda
new Thread(()-> {
System.out.println(Thread.currentThread().getName() + "创建1新线程");
}
).start();
//优化lambda
//没有参数()不可以省略,只有一行代码,{},;,return可以省
new Thread(()->System.out.println(Thread.currentThread().getName() + "创建1新线程")
).start();
}
}