前言
Lambda表达式是jdk1.8的一个新特性,他属于一种语法堂主要作用是对匿名内部类语法简化
lambda基本应用
lambda表达式想要优化匿名内部类是有前提条件,首先必须是一个接口,而且要求接口中只能有1个抽象方法,称之为函数式接口
interface C{
void t1();
}
C c1 = new C(){
public void t1(){
System.out.println("--------------");
}
}
C c2 = ()->{System.out.println("-----------------");} ;
lambda语法细节
参数列表中可以省略参数类型
interface A{
void t1(int num1 ,int num2) ;
}
A a1 = (int num1, int num2)->{}
A a2 = (num1,num2) -> {}
参数列表中只有一个参数,可以省略()
interface A{
void t1(int num) ;
}
A a1 = (num)->{}
A a2 = num->{}
参数列表中没有参数时,必须保留()
interface A{
void t1();
}
A a = ()->{};
如果方法体中只有一行代码,可以省略{}
interface A{
void t1();
}
A a1 = ()->{System.out.println("A");};
A a2 = ()->System.out.println("A");
如果方法需要返回值,但方法体中只有一行代码,可以省略{}和return关键字
interface A{
int t1();
}
A a1 = ()->{return 100 ;} ;
A a2 = ()-> 100 ;
如果方法体中有多行代码, {}和return关键字都不能省略
interface A{
int t1();
}
A a1 = ()->{
int num = 10 ;
return nun ;
}