1.Lambda表达式定义格式
Lambda格式:
()->{}
a.():重写方法的参数位置
b.->:指的是传递->将重写方法的参数传递到方法体中
c.{}:重写方法的方法体
public static void main(String[] args) {
/*
new Thread不能省略,如果省略了,没法创建线程对象了
new Runnable() {
@Override
public void run() {
System.out.println("我执行了");
}
}
new Runnable的目的是啥?重写run方法,设置线程任务
所以,按照函数式编程思想的角度来分析,new Runnable就是过程
目的是重写run方法,设置线程任务
所以new Runnable可以省略了
*/
new Thread(()-> System.out.println("我执行了")).start();
}
2.Lambda表达式使用前提
1.前提:
必须是函数式接口做方法参数传递
2.函数式接口:
有且只能有一个抽象方法的接口
3.检测:
@FunctionalInterface
@FunctionalInterface
public interface USB {
public abstract void open();
}
public class Test01 {
public static void main(String[] args) {
/* method01(new USB() {
@Override
public void open() {
System.out.println("usb打开了");
}
});*/
method01(()-> System.out.println("usb打开了"));
}
public static void method01(USB usb){
usb.open();
}
}
3.Lambda表达式省略规则
a.先观察是否是函数式接口做方法参数传递
b.如果是,在传递实参的时候以匿名内部类的形式传递
c.从new接口开始到重写方法的方法名结束,选中,删除 -> 别忘记再删除一个右半个大括号
d.在重写方法的参数和方法体之间加->
省略规则:
a.重写方法的参数类型可以省略
b.如果重写方法的参数只有一个,所在的小括号可以省略
c.如果方法体中只有一句话,所在的大括号以及分号可以省略
d.如果方法体中只有一句话,并且是带return的,那么所在的大括号,return,分号都可以省略