1.介绍:Lambda表达式是JDK 8开始新增的一种语法形式。
2.作用:用于简化匿名内部类的代码写法。
3.注意 : Lambda表达式只能简化函数式接口 的匿名内部类。
4.函数式接口:有且仅有一个抽象方法的接口。
5.注意:大部分函数式接口上面都可能会有一个**@FunctionalInterface** 的注解,有该注解的接口就必定是函数式接口。
6.格式:
java
//(被重写方法的形参列表) -> {
// 被重写方法的方法体代码
//}
//初始
Cooking c1 = new Cooking(Food f){
@Override
public void cook(){
System.out.println("Making meat!");
}
};
//简化
Cooking c2 = (Food f) -> {
System.out.println("Making meat!");
};
interface Cooking{
void cook(Food f);
}
7.Lambda表达式的省略规则:
A. 参数类型可以省略不写。
java
Cooking c2 = (f) -> {
System.out.println("Making meat!");
};
B. 如果只有一个参数,参数类型可以省略,同时()也可以省略。
java
Cooking c2 = f -> {
System.out.println("Making meat!");
};
- C. 如果Lambda表达式中的方法体代码只有一行代码,可以省略大括号不写,同时要省略分号!此时,如果这行代码是return语句,也必须去掉return不写。
java
Cooking c2 = f -> System.out.println("Making meat!");