玩转java多线程 之多线程基础 lambda表达式(超详细)

    科技2022-07-10  141

    使用lambda表达式的原因是: 避免匿名类定义过多 可以让代码看起来简洁 去掉没有意义的代码,只留下核心逻辑

    理解Functional Interface(函数式接口)是学习lambda表达式的关键

    函数式接口定义: 任何接口,如果只包含一个抽象方法,那就是一个函数式接口 对于函数式接口,可以通过lambda表达式创建该接口的对象

    package duoxiancheng; //推导lambda表达式 public class TestLambda { //3.静态内部类 static class Like2 implements ILike{ @Override public void lambda() { System.out.println("I like lambda2"); } } public static void main(String[] args) { ILike iLike = new Like(); iLike.lambda(); iLike = new Like2(); iLike.lambda(); //4.局部内部类 class Like3 implements ILike{ @Override public void lambda() { System.out.println("I like lambda3"); } } iLike = new Like3(); iLike.lambda(); //5.匿名内部类,没有类的名称,必须借助接口或者父类 iLike = new ILike() { @Override public void lambda() { System.out.println("I like lambda4"); } }; iLike.lambda(); //6.使用lambda进行简化 iLike = () ->{ System.out.println("I like lambda5"); }; iLike.lambda(); } } //1.定义一个函数式接口 interface ILike{ void lambda(); } //2.实现类 class Like implements ILike{ @Override public void lambda() { System.out.println("I like lambda"); } }

    原来的时候,一个类要实现一个接口,然后重写类的方法 经过不断的简化,从静态内部类,到局部内部类,到局部匿名类,最后简化到lambda表达式,十分方便

    再试一下,接口实现的方法是带参数的,是一样的

    package duoxiancheng; public class TestLambda2 { //静态内部类 static class Love2 implements ILove{ @Override public void love(int a) { System.out.println("I love you -> " + a); } } public static void main(String[] args) { ILove love = new Love(); love.love(2); love = new Love2(); love.love(3); //局部内部类 class Love2 implements ILove{ @Override public void love(int a) { System.out.println("I love you -> " + a); } } love = new TestLambda2.Love2(); love.love(4); //匿名内部类 love = new ILove() { @Override public void love(int a) { System.out.println("I love you -> " + a); } }; love.love(5); //lambda表达式 love = (int a) -> { System.out.println("I love you -> " + a); }; love.love(520); //进一步简化,去掉参数类型 love = a -> System.out.println("I love you -> " + a); love.love(521); } } interface ILove{ void love(int a); } class Love implements ILove{ @Override public void love(int a) { System.out.println("I love you -> " + a); } }

    运行结果: I love you -> 2 I love you -> 3 I love you -> 4 I love you -> 5 I love you -> 520 I love you -> 521

    Process finished with exit code 0

    再啰嗦一下,接口必须是函数式接口,才能使用lambda表达式

    好了,今天先到这里~

    Processed: 0.017, SQL: 9