-
避免匿名内部类定义过多
-
实质属于函数式编程的概念
-
什么是函数式接口?
-
只包含唯一 一个抽象方法的接口
public interface Runnable {public abstract void run();}
-
对于函数式接口可以通过lambda表达式创建该接口对象
-
lambda表达式使用:
-
(parameters) -> expression 或 (parameters) ->{ statements; }
-
parameter -> expression 或 parameter ->{ statements; }
-
只有一行代码的情况下才能简化成一行,多行代码必须用代码块包裹。
-
接口必须是函数式接口
-
多个参数也可去掉参数类型,要去掉就全部去掉,必须加上括号
//从接口的实现类-->静态内部类-->局部内部类-->匿名内部类-->lambda表达式的过程
public class TestLambda {
//3.静态内部类
static class Like2 implements ILike {
@Override
public void lambda(int a) {
System.out.println("I Like Lambda2." + a);
}
}
public static void main(String[] args) {
//4.局部内部类
class Like3 implements ILike {
@Override
public void lambda(int a) {
System.out.println("I Like Lambda3." + a);
}
}
ILike like = new Like1();
like.lambda(1);
like = new Like2();
like.lambda(2);
like = new Like3();
like.lambda(3);
//5.匿名内部类 没有类的名称,必须借助接口或者父类
like = new ILike() {
@Override
public void lambda(int a) {
System.out.println("I Like Lambda4." + a);
}
};
like.lambda(4);
//6.用Lambda简化
//like = a -> System.out.println("I Like Lambda5." + a);
like = (int a) -> {
System.out.println("I Like Lambda5." + a);
};
like.lambda(5);
}
}
//1.定义一个函数式接口
interface ILike{
void lambda(int a);
}
//2.实现类
class Like1 implements ILike{
@Override
public void lambda(int a) {
System.out.println("I Like Lambda1." + a);
}
}