来自尚硅谷,感谢硅谷。
Lambda表达式: -> Java8的语法糖,该符号将 表达式拆分为两部分
左侧为 Lambda表达式的参数列表
右侧为表达式所需执行的功能,Lambda体(其实也就是方法的实现)
格式一:无参,无返回值
() -> System.out::println;
格式二:一个参数,无返回值
(x) -> System.out.println(x);
格式三:只有一个参数,小括号省略不写
x -> System.out.println(x);
格式四:两个以上参数,有返回值,并且Lambda体多语句
Comparator<Integer> com = (x, y) -> {
System.out.println("######");
return Integer.compare(x, y);
};
格式五:Lambda 体只有一条语句, return 和 大括号都可以省略不写
Comparator<Integer> com = (x,y) -> Integer.compare(x,y);
格式六: 表达式的参数类型可以省略不写,JVM编译器通过上下文推断数据类型,即“类型推断”
(Integer x,Integer y) -> Integer.compare(x,y);
注意!!!
Lambda表达式需要“函数式”接口的支持。
函数式接口:接口中只有一个抽象方法的接口,称为函数式接口,可以使用注解 @FunctionalInterface 修饰,检查是否是函数式接口