Lambda表达式
1.简介和用法
1.1举例
(o1,o2) -> Integer.compare(o1,o2)
1.2 格式
-> : Lambda操作符 或箭头操作符
->左边:Lambda形参列表(其实就是接口中的抽象方法的形参列表)
->右边:lambda 体 (其实就是重写的抽象方法的方法体)
1.3 lambda表达式的使用:(分为6种情况介绍,详情见本文第二章 语法)
总结:
->左边 : lambda形参列表的参数类型可以省略(类型推断),如果形参列表内只有一个参数,那么小括号()可以省略
->右边 : lambda体应该使用一对{}包裹,如果lambda体只有一条执行语句(可能是return语句),{}和return都可以省略
1.4 lambda表达式的本质:作为函数式接口的实例
1.5 如果一个接口中,只能声明了一个抽象方法,则此接口就成为函数式接口。我们可以在一个接口上使用lambda表达式,这样做可以检查它是否是一个函数式接口。
1.6 所有以前用匿名实现类表示的现在都可以用lambda表达式来写。
2.语法(六种格式)
():参数列表(括号可选)
-> 连接符,固定写法
{}: 参数列表(括号可选)
2.1 无参 无返回值
Runnable r1=() -> {System.out.print}
2.2 Lambda需要一个参数,但是没有返回值
Consumer<String> con=(String str) -> {System.out.print}
2.3 数据类型可以省略,因为可由编译器推断得出,称为“类型推断”
//不管有多少个参数都可以省略,但是多个参数时要按顺序写
Consumer<String> con=(str) -> {System.out.print}
2.4 Lambda若只需要一个参数时,小括号可以省略
Consumer<String> con=str-> {System.out.print}
2.5 Lambda需要两个或以上的参数,多条语句执行,并可以有返回值
Consumer<Integer> con=(x,y) -> {
System.out.print("实现函数式结构方法!")
return Integer.compare(x,y);
}
2.6 当Lambda体只有一条语句时,return与大括号若有,都可以省略
Consumer<Integer> con=
(x,y) -> Integer.compare(x,y)

浙公网安备 33010602011771号