函数式接口(Functional Interface)
- 任何接口,如果只包含唯一一个抽象方法,那么他就是一个函数式接口
- 对于函数式接口 我们可以通过lamda表达式来创建该接口的对象
以往我们实现函数式接口的方法
1.实现类
//class Legend implements ILegend {
// @Override
// public void play(int a) {
// System.out.println("legend play"+a);
// }
//}
public class LambdaDemo {
// //2.静态内部类--->实现类加一个static放到类里面
// static class Legend implements ILegend{
// @Override
// public void play(int a) {
// System.out.println("legend play"+a);
// }
// }
public static void main(String[] args) {
ILegend legend = null;
//3.局部内部类--->实现类直接放到方法里
// class Legend implements ILegend{
// @Override
// public void play(int a) {
// System.out.println("legend play"+a);
// }
// }
//1,2,3赋值
// legend = new Legend();
//4.匿名内部类-->没有实现类 直接使用`接口的构造方法`
legend = new ILegend() {
@Override
public void play(int a) {
System.out.println("legend play"+a);
}
};
//执行play方法
legend.play(1);
}
}
//函数式接口:只有一个方法
interface ILegend{
void play(int a);
}
使用lambda表达式
public class LambdaDemo {
public static void main(String[] args) {
//5.1 lambda简化1
legend = (int a) -> {
System.out.println("lambda legend play" + a);
};//记得加分号
//5.2 lambda简化2 去掉参数类型 **** 一般简化到这
// 多个参数时 参数类型要么全部保留 要么全部去掉 不能只去掉一部分
legend = (a) -> {
System.out.println("lambda legend play" + a);
};//记得加分号
//5.3 lambda简化3 去掉参数括号 多个参数时 不能去掉参数括号
legend = a -> {
System.out.println("lambda legend play" + a);
};//记得加分号
//5.4 lambda简化4 去掉花括号 仅限只有一条语句时使用
legend = a -> System.out.println("lambda legend play" + a);
//执行play方法
legend.play(1);
}
}
//函数式接口:只有一个方法
interface ILegend{
void play(int a);
}