Java8,Lambda表达式
Lambda表达式
λ是希腊字母表中第11位字母
实质属于函数式编程
作用:
- 避免匿名内部类定义过多
- 使代码看起来更加简介
- 删去无意义代码,留下核心逻辑
函数式接口Functional Interface
函数是接口是Lambda表达式的基础
函数式接口的定义:
- 只包含唯一一个抽象方法的接口
public interface Runnable{
public abstract void run();
}
- lambda表达式可以永远创建函数式接口的对象
Lambda表达式推导
函数式接口:
interface ILike{
void lambda();
}
- 实现类
class Like implements ILike{
@Override
public void lambda() {
System.out.println("I like lambda");
}
}
main方法:
public static void main(String[] args) {
ILike l = new Like();
l.lambda();
}
//I like lambda
- 静态内部类
static class Like2 implements ILike{
@Override
public void lambda() {
System.out.println("I like lambda2");
}
}
main方法:
public static void main(String[] args) {
ILike l = new Like2();
l.lambda();
}
//I like lambda2
- 局部内部类
//在mian方法中
class Like3 implements ILike{
@Override
public void lambda() {
System.out.println("I like lambda3");
}
}
ILike l = new Like3();
l.lambda();
//I like lambda3
- 匿名内部类
ILike l = new ILike(){
@Override
public void lambda() {
System.out.println("I like lambda4");
}
};
l.lambda();
//I like lambda3
- Lambda表达式
()->
:括号中是传入参数
ILike l = () -> {
System.out.println("I like lambda5");
};
l.lambda();
//I like lambda5
简化
Lambda表达式
ILike l = (int a) -> {
System.out.println("I like lambda");
};
- 简化参数类型(多个不同类型的参数也可以去掉参数类型,需要全部取消)
ILove l = (a) -> {
System.out.println("I like lambda");
};
- 简化括号(多行代码时需要花括号包裹)
ILove l = a -> {
System.out.println("I like lambda");
};
- 简化花括号(仅适用于单行代码)
ILove l = a -> System.out.println("I like lambda");