1、Lambda表达式的简化格式:
() -> {
被重写的方法体代码
}
例: 简化前:
public class LambdaDemo1 {
public static void main(String[] args) {
Animal a = new Animal() {
@Override
public void run() {
System.out.println("乌龟跑的贼快");
}
};
a.run();
}
}
简化后:
public class LambdaDemo1 {
public static void main(String[] args) {
Animal a = () ->{ System.out.println("乌龟跑的贼快"); };
a.run();
}
}
进一步简化:
run(() -> {
System.out.println("乌龟跑的贼快");
});
2、注意事项:
Lambda表达式只能简化 函数式接口 的匿名内部类的写法形式(函数式接口):
①、首先必须是接口、其次接口中有且仅有一个抽象方法的形式;
②、通常我们会在接口上加上一个 @FunctionalInterface 注解,标记该接必须是满足函数式接口。
3、Lambda表达式的省略写法(进一步在Lambda表达式的基础上继续简化):
1、参数类型可以省略不写;
2、如果只有一个参数,参数类型可以省略,同时()也可以省略;
3、如果Lambda表达式的方法体代码只有一行代码,可以省略{},同时要省略分号;
4、如果Lambda表达式的方法体代码只有一行代码,可以省略大括号不写, 此时,如果这行代码是return语句,必须省略return不写,同时也必须省略 ";" 不写。