- Lambda表达式是jdk8开始新增的一种语法形式
- 作用:用于简化匿名内部类的代码写法
- 格式:
注意:Lambda表达式只能简化函数式接口的匿名内部类
函数式接口指有且仅有一个抽象方法的接口
将来我们见到的大部分函数式接口,上面都可能会有一个@Functionalinterface的注解,有该注解的接口就必定是函数式接口
代码演示Lambda表达式:
public class lambda_ {
public static void main(String[] args) {
// Animal dog = new Animal(){ //匿名内部类原来的写法
// @Override
// public void run() {
// System.out.println("狗跑的飞快~~~");
// }
// };
// dog.run();
//注意:Lambda表达式并不能简化全部匿名内部类写法,只能简化函数式接口的匿名内部类
// Animal dog = () ->{ //错误代码演示
// System.out.println("狗跑的飞快~~~");
// }
// dog.run();
// flying f = new flying(){ //函数式接口匿名内部类
// @Override
// public void fly() {
// System.out.println("鸟飞翔在乌云之中");
// }
// };
// f.fly();
flying f = () -> { //简化,Lambda表达式写法
System.out.println("鸟飞翔在乌云之中");
};
f.fly();
}
}
interface flying{
void fly();
}
abstract class Animal{
public abstract void run();
}
Lambda表达式的省略写法(进一步简化Lambda表达式的写法)
- 参数类型可以省略不写
- 如果只有一个参数,参数类型可以省略,同时()也可以省略
- 如果Lambda表达式中的方法体代码只有一行代码,可以省略大括号不写,同时要省略分号!此时,如果这行代码是return语句,也必须去掉return不写
例如: