Lambda表达式
避免匿名内部类定义过多
实质为函数式编程的概念
Lambda表达式的优点:
- 避免匿名内部类定义过多
- 使代码简洁、去掉无意义的代码,留下核心逻辑
Functional Interface(函数式接口)
任何接口,如果只包含唯一一个抽象方法,它就是函数式接口。
对于函数式接口,可以通过Lambda表达式来创建接口对象。
lambda表达式语法:
iLike = () -> {
System.out.println("lambda5");
};
接口实现简化过程
首先定义函数式接口:
interface ILike {
void lambda();
}
简化接口实现:
- 接口实现类
class ILikeImpl implements ILike{
@Override
public void lambda() {
System.out.println("lambda");
}
}
- 静态内部类
static class ILikeImpl2 implements ILike{
@Override
public void lambda() {
System.out.println("lambda2");
}
}
- 局部内部类
class ILikeImpl3 implements ILike{
@Override
public void lambda() {
System.out.println("lambda3");
}
}
- 匿名内部类
iLike = new ILike(){
@Override
public void lambda() {
System.out.println("lambda4");
}
};
- Lambda表达式
iLike = () -> {System.out.println("lambda5");};
Lambda表达式简化
对于函数式接口中带参数的方法:
iLike = (int a) -> {
System.out.println("love " + a);
}
简化参数类型,多个参数也可以简化参数类型,但必须加括号
iLike = (a) -> {
System.out.println("love " + a);
}
简化括号
iLike = a -> {
System.out.println("love " + a);
}
当方法实现只有一行时,可以简化花括号
iLike = a -> System.out.println("love " + a);