Lambda表达式
概念:本质上是一个对象,可以当作是匿名内部类创建的对象的简写格式。
格式:(参数)->{方法体}
说明:
参数:需要重写的抽象方法中的形参列表
->:为了分隔前后两部分,Lambda运算符或者箭头运算符
方法体:需要对抽象方法重写的内容
案例:
-
如果抽象方法没有参数,方法体只有一句:
方法体外的大括号可以省略。
格式:()->方法体语句;
式.assets\wpsDD76.tmp.jpg)]
- 如果抽象方法中有一个参数:
参数的类型可以省略,参数外的小括号可以省略
格式:参数名->{方法体语句};
-
如果方法的参数有多个:
参数外的小括号不能省略,参数类型可以省略。
格式:(参数名称1,参数名称2)->{方法体语句};
- 如果方法有返回值:
直接在方法体中的大括号中对数据进行return即可
格式:(参数名称)->{
方法体语句:
return语句;
};
- 如果方法需要返回值,而且方法体只有一句:
可以将大括号和return关键字一起省略
格式:(参数名称)->要返回的数据;
Lambda表达式和匿名内部类的区别
(1)如果接口中有多个抽象方法,只能使用匿名内部类实现;不能使用Lambda表达 式方式实现
(2)如果定义了一个抽象类,不能使用Lambda表达式定义抽象类的子类对象;Lambda 只适用于接口
式方式实现
(2)如果定义了一个抽象类,不能使用Lambda表达式定义抽象类的子类对象;Lambda 只适用于接口
(3)使用匿名内部类创建接口的实现类对象,会生成一个对应的class文件,但是使用 Lambda表达式则没有对应的class文件