美文网首页
Lambda表达式

Lambda表达式

作者: ONE_PIECES | 来源:发表于2019-04-19 17:57 被阅读0次

    函数式编程思想:
    只要能获取到结果,谁去做的,怎么做的都不重要,重视的是结果,不是过程;将怎么做回归到做什么的本质

    07-2 Runnable接口实现多线程

    代码分析:
    对于Runnable的匿名内部类,分析出几点内容:
    * Thread类需要Runnable接口做为参数,其中的抽象run方法中编写线程任务代码
    * 为了实现run方法体,不得不需要Runnable接口的实现类
    * 可以使用匿名内部类代替RunnableImpl具体实现类
    * 必须覆盖抽象的run方法,名称方法参数返回值等都需要写一遍,而且不能写错
    * 实际上,只有方法体才是关键

    //Lambda表达式的实现,组成部分
        1. 一些参数
        2. 一个箭头
        3. 一段代码
        (参数类别)->{一些重写方法的代码}
            new Thread(()->{
                System.out.println("似乎只有这个run方法是核心");
            }).start();  
    

    同样的语义,使用Lambda语法更简单
    ()-> System.out.println("似乎只有这个run方法是核心")

    • 前面的一对小括号即run方法的参数(无),代表没有参数
    • 中间的一个箭头代表将前面的参数传递给后面的代码
    • 后面的大括号{}重写接口的抽象方法的方法体,输出语句是具体的业务逻辑
    07-3 Lambda表达是举例
    //无参数无返回值-----------------------------------
    new Thread(runnableImpl).start();
    
    new Thread(new Runnable() {
                @Override
                public void run() {
                    System.out.println("似乎只有这个方法体才是核心");
                }
            }).start();  
            
    //有参数有返回值-----------------------------------
           //匿名内部类实现
            invlckCal(10, 20, new Calculator() {
                @Override
                public int Calculator(int a, int b) {
                    return a+b;
                }
            });
    
            //Lambada,实现带参数带返回值(这个调用的方法体有参数)
            invlckCal(10,20,(int a,int b)->{
                return a+b;
            });
             //优化格式
            invlckCal(10,20,( a, b)->
                 a+b
            );
            
      //上面调用的方法      
     public static void invlckCal(int a,int b,Calculator calculator){
           int sum =  calculator.Calculator(a, b);
            System.out.println("计算方法 被调用"+sum);
        }              
    
    07-3 Lambda省略
    1. Lambda表达式是可以推到可以省略的
    2. 凡是可以根据上下文推到出来的内容都可以省略不写
      可以省略的内容:
      1. (参数列表):括号中参数列表的数据类型可以省略不写
      2. (参数列表):括号中的参数只有一个,那么参数类型和()都可以省略不写
      3. {一些代码}:如果{}中的代码只有一行,无论有返回值,可以省略{},return,分号,要一起省略
        使用的前提
    3. 使用Lambda必须具有接口,而且要求接口中有且仅有一个抽象方法
    4. 使用Lambda必须具有上下文推断能力
      备注:有且仅有一个抽象方法的接口,称为函数式接口

    相关文章

      网友评论

          本文标题:Lambda表达式

          本文链接:https://www.haomeiwen.com/subject/nzucgqtx.html