Loading

Java多线程07-Lamda表达式

07、Lambda表达式

  • 希腊字母表排序第十一位的字母,英语名称为Lambda
  • 避免匿名内部类定义过多
  • 其实质属于函数式编程的概念

为什么要使用lambda表达式

  • 避免匿名内部类定义过多
  • 可以让你的代码看起来很简洁
  • 去掉了一堆没有意义的代码,只留下了核心的逻辑

也许你会说,我看了lambda表达式,不但不觉得简洁,反而觉得更乱,看不懂了。那是因为我们还没有习惯,用的多了,看习惯了,就好了。

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

函数式接口的定义

  • 任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口
  • 对于函数式接口,我们可以通过lambda表达式来创建该接口的对象
/*
/推导lamda表达式
 */

public class TestLamda {
    //静态内部类
    static class Like2 implements Ilike{
        @Override
        public void lamba() {
            System.out.println("i like lamda2");
        }
    }
    public static void main(String[] args) {
        Ilike ilike=new Like1();
        ilike.lamba();
        ilike= new Like2();
        ilike.lamba();

        //局部内部类
        class Like3 implements Ilike{
            @Override
            public void lamba() {
                System.out.println("i like lamda??");
            }
        }
        ilike=new Like3();
        ilike.lamba();

        //匿名内部类
        ilike =new Ilike() {
            @Override
            public void lamba() {
                System.out.println("i like lamda03");
            }
        };
        ilike.lamba();

        //lamda简化
        ilike=() ->{
            System.out.println("i like lamda0555555");
        };
        ilike.lamba();
    }
}

//定义一个函数式接口
interface Ilike{
    void lamba();
}

class Like1 implements Ilike{
    @Override
    public void lamba() {
        System.out.println("i like lamda");
    }
}

简化过程

public class TestLamda2 {
    public static void main(String[] args) {
//        Love love=(int a) -> {
//            System.out.println("i love you "+a);
//        };
//        love.love(90);
        //简化版本
        Love love=a -> System.out.println("i love you"+a);
        love.love(90);
    }
}

interface Love{
    void love(int a);
}

总结

  • lambda表达式只有一行代码的情况下才可以简化成一行,如果有多行,那么就用代码块包裹
  • 前提是接口为函数式接口
  • 多个参数也可以去掉参数类型,要去掉就都去掉,必须加上括号(单个参数可以省略括号)
posted @ 2022-02-14 22:31  Cn_FallTime  阅读(48)  评论(0编辑  收藏  举报