对于函数式接口,可以通过lambada表达式来装载该接口的对象
函数式接口
任何接口,如果只包含唯一一个抽象方法,那么他就是一个函数式接口。
Lambda表达式与其他实现方法的对比
package com.zls.demo02;
public class TestLambda01 {
//静态内部类
static class Like2 implements ILike{
@Override
public void lambda() {
System.out.println("I Like Lambda2");
}
}
public static void main(String[] args) {
ILike like = new Like1();
like.lambda();
like = new Like2();
like.lambda();
//3 局部内部类
class Like3 implements ILike{
@Override
public void lambda() {
System.out.println("I Like Lambda3");
}
}
like = new Like3();
like.lambda();
//4 匿名内部类,没有类的名称,必须借助接口或者父类
like = new ILike() {
@Override
public void lambda() {
System.out.println("I Like Lambda4");
}
};
like.lambda();
//5 用lambda简化
like = () -> {
System.out.println("I Like Lambda5");
};
like.lambda();
}
}
//定义一个函数式的接口
interface ILike{
void lambda();
}
//1 实现类
class Like1 implements ILike{
@Override
public void lambda() {
System.out.println("I Like Lambda1");
}
}
运行结果:
简化写法
public class TestLambda02 {
public static void main(String[] args) {
//完整写法
ILove love = (int a) -> {
System.out.println("I Love you " + a);
};
//简化1.参数类型
love = (a) ->{
System.out.println("I Love you " + a);
};
//简化2.括号
love = a ->{
System.out.println("I Love you " + a);
};
//简化3.花括号 前提条件式代码只有一句
love = a -> System.out.println("I Love you " + a);
love.love(2);
}
}
interface ILove{
void love(int a);
}