当前位置 博文首页 > 文章内容

    java中lambda表达式的分析与具体用法

    作者:21344 栏目:未分类 时间:2021-04-08 14:44:57

    Lamda表达式

    λ 希腊字母表中排序第十一位字母,英语名称为Lambda

    避免匿名内部类定义过多

    其实质属于函数式 编程的概念

    (params)->expression[表达式]

    (params)->statement[语句]

    (params)->{statements}

    (a-> System.out.print(“i like lambda–>”+a));

    new Thread (()->System.out.println(“多线程学习。。。。”)).start();

    为什么要使用lambda表达式

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

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

    本章重点

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

    函数接口的定义

    • 任何接口,如果只包含唯一一个抽象方法,那么他就是一个函数式接口
    • 对于函数式接口,我们可以通过lambda式来创建该接口的对象。

    实例代码

    静态内部类,局部内部类,匿名内部类与lambda表达式

    public class TestLambda1 {
        //静态内部类
        static class like2 implements ilike{
            @Override
            public void lambda() {
                System.out.println("i like lambda2");
            }
        }
    
    
    
    
        public static void main(String[] args) {
            ilike i=new like();
            i.lambda();
            i=new like2();
            i.lambda();
            //局部内部类
            class like3 implements ilike{
                @Override
                public void lambda() {
                    System.out.println("i like lambda3");
                }
    
            }
            i=new like3();
            i.lambda();
    
            //匿名内部类,没有类的名称,必须借助接口或者夫类
            i=new ilike() {
                @Override
                public void lambda() {
                    System.out.println("i like lambda4");
                }
            };
            i.lambda();
    
    
            //用lambda简化
            i =()-> {
                System.out.println("i like lambda5");
            };
            i.lambda();
    
    
    
    
        }
    }
    //定义一个函数式接口
    interface ilike{
        void lambda();
    }
    //实现接口
    class like implements ilike{
        @Override
        public void lambda() {
            System.out.println("i like lambda");
        }
    }
    
    

    lambda表达式:

    public class TestLambda2 {
    
        public static void main(String[] args) {
            Ilove love=null;
    
    
            //2.lamda表示简化
    //        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 -->"+a);
            //总结
            //lambda表达式只能有一行代码的情况下才能简化成为一行,如果又多行就携程代码块
            //前提是接口为函数式(接口中只有一个方法位函数方法)
            //多个参数也可以去掉参数类型,要去掉都去掉,必须加上括号
    
    
    
            love.love(2);
        }
    
    }
    interface Ilove{
        void love(int a);
    }
    

    总结