特点
- Lambda表达式时JDK8新推出的功能,一种函数式编程
- 实现的接口必须为函数式接口(即接口有且仅有一个方法)
主要功能
- Lambda表达式时JDK8新推出的功能,一种函数式编程
- 避免匿名内部类定义过的过多
- 去掉无意义代码,留下核心逻辑
实例
Lambd表达式通式:
接口对象 = (参数)->{方法体};
public class LambdaTest {
static class Like2 implements ILike{
@Override
public void Fun() {
System.out.println("这是静态内部类");
}
}
public static void main(String[] args) {
class Like3 implements ILike{
@Override
public void Fun() {
System.out.println("这是局部内部类");
}
}
ILike iLike; //接口对象
iLike = new Like();//外部实现类
iLike.Fun();
iLike = new Like2();//静态内部类
iLike.Fun();
iLike = new Like3();//局部内部类
iLike.Fun();
iLike = new ILike() { //静态内部类
@Override
public void Fun() {
System.out.println("这是匿名内部类");
}
};
iLike.Fun();
iLike = () ->{ //Lambda表达式
System.out.println("这是Lambda表达式");
};
iLike.Fun();
}
}
interface ILike{ //函数式接口
void Fun();
}
class Like implements ILike{
@Override
public void Fun() {
System.out.println("这是外部类");
}
}
可以看到Lambda表达式是外部类实现类->静态内部类->局部内部类->匿名内部类->Lambd表达式的一个逐步简化过程;
带参数Lambda表达式
public class LambdaTest02 {
public static void main(String[] args) {
ILike2 iLike2 = (i,j)->{ //参数类型可以简化不写
System.out.println(i+j);
};
iLike2.Fun2(123,456);
}
}
interface ILike2{
void Fun2(int i,double j);
}
补充:
- Lambd表达式参数列表中,参数类型可以简化不写
- 在参数只有一个的前提下,参数列表的括号可以简化不写