Lambda表达式介绍
它的作用主要是为了简化匿名内部类的写法
格式:
(匿名内部类被重写方法的形参列表) -> {
被重写方法的方法体代码。
}
!:Lambda表达式只能简化函数式接口的匿名内部类的写法形式
函数式接口的定义:
首先必须是接口、其次接口中有且仅有一个抽象方法的形式
所以Lambda表达式只能简化接口中只有一个抽象方法的匿名内部类形式
public class test {
public static void main(String[] args) {
r(() ->{
System.out.println("跑");
});
}
public static void r(Run a){
System.out.println("预备————!");
a.run();
}
}
@FunctionalInterface //加上这个注解就为函数式接口 里面只能有一个抽象方法
interface Run{
void run();
}
Lambda表达式的省略规则(再 Lambda表达式基础上再次简化)
要点:
- 参数类型可以省略不写。
- 如果只有一个参数,参数类型可以省略,同时()也可以省略。
- 如果Lambda表达式的方法体代码只有一行代码。可以省略大括号不写,同时要省略分号!
- 如果Lambda表达式的方法体代码只有一行代码。可以省略大括号不写。此时,如果这行代码是return语句,必须省略return不写,同时也必须省略";"不写。
public class test {
public static void main(String[] args) {
r(() -> System.out.println("跑"));
}
public static void r(Run a){
System.out.println("预备————!");
a.run();
}
}
@FunctionalInterface //加上这个注解就为函数式接口 里面只能有一个抽象方法
interface Run{
void run();
}