函数式接口:
任何接口,如果只包含唯一一个抽象方法,那么他就是函数式接口。
例如:Ilike接口只有一个抽象方法,则为函数式接口
interface ILike{ void lamada(); }
演变一:
静态内部类,
static class Like2 implements ILike{ @Override public void lamada() { System.out.println("I like lamada2"); } } public static void main(String[] args) { new Like().lamada(); new Like2().lamada(); }
演变二、
局部内部类、定义在一个方法里面的类
public static void main(String[] args) { new Like().lamada(); new Like2().lamada(); class Like3 implements ILike{ @Override public void lamada() { System.out.println("I like lamad3"); } } new Like3().lamada(); }
演变三、
匿名内部类,没有类名,必须借助接口名或父类的名称
ILike like=new ILike() { @Override public void lamada() { System.out.println("i like lamada4"); } }; like.lamada();
演变四、
lamada表达式
ILike like1=()->{ System.out.println("i like lamada5"); };
常用实例
Runnable runnable1 = () -> { System.out.println("lamada表达式"); }; new Thread(runnable1).start(); new Thread(() -> { System.out.println("lamada表达式"); }).start();