作用:
用来代替用匿名内部类创建函数式接口的繁琐语法
函数式接口:
内部只有一个抽象方法,可以有多个普通方法,类方法
例子:
Comparator<String> com = new Comparator<String>(){
@Override
public int compare(String o1, String o2) {
return Integer.compare(o1.length(), o2.length());
}
};
如果用lambda表达式,则可写为:(因为lambda方法体中只有一条语句,所以省略了花括号)
Comparator<String> com=(x,y)-> Integer.compare(x.length(),y.length());
基本构成:
-
形参列表,如果只有一个参数可以不用(),如果有两个以上参数需要写上()
-
箭头 ->
-
代码块,如果代码块内只有一条语句,则可以不用写花括号,多条语句是需要的
基本语法:
- 无参数,无返回条件时:
()-> System.out.println("HELLO lambda")
- 有一个参数,无返回条件时:
X ->System.out.println(X)
- 有多个参数,有返回条件,但是只有一条语句时:
(x,y)-> Integer.compare(x,y)
- 有多个参数,多条语句时:
(x,y)->{
System.out.println("HELLO")
return Integer.compare(x,y)
}