zoukankan      html  css  js  c++  java
  • 菜鸟理解Lamdba表达式

    简单的说就是Java 1.8后给出个简化代码的方式,

    Java面向对象过分强调必须通过对象的形式来完成任务,而函数思想则尽量忽略面向对象的复杂语法,强调做什么,而不是以什么形式做。

    举个栗子!

    首先创建一个接口

    package com.mju.band3;

    public interface Cook {

    public void MakeFood( );

    }
    接着我们用匿名内部类,Lambda表达式和简化Lambda来玩玩看


    //匿名内部类,invokeCook参数是Cook,使用匿名内部类new一个Cook你懂我意思吧?
    package com.mju.band3;

    public class CookLambda {

    public static void main(String[] args) {

    invokeCook(new Cook() {
    @Override
    public void MakeFood() {
    System.out.println("吃饭饭");
    }
    });


    //Lambda表达式:括号代表的是Cook的(),有参数那就往里面传参,下面我会有个传参数的例子->代表前面的参数传递给后面的代码,后面的输出语句就是业务逻辑代码
    >

    invokeCook(()->{
    System.out.println("我也吃饭饭");
    });
    //简化Lambda
    1:(参数列表)小括号内的参数类型可以省略
    2:(参数列表)括号中的参数如果只有一个,那么参数和类型都可以省略
    3:(一些代码)如果{}中代码只有一行,无论有无返回值,都可以省略{},return,分号,不过要注意要省略的话这三个得都省略,不能只省略其中几个,

    invokeCook(()-> System.out.println("我也他妈要吃饭饭"));
    }


    public static void invokeCook(Cook cook){
    cook.MakeFood();

    }



    }

    ==========================================================================================================================================
    再来个有参数例子
    package com.mju.band3;

    public interface Culator {

    public int carulater(Integer a,Integer b);
    }




    package com.mju.band3;

    public class Cualter {
    public static void main(String[] args) {
    // invokeCul(10, 20, new Culator() {
    // @Override
    // public int carulater(Integer a, Integer b) {
    // return a+b;
    // }
    // });
    invokeCul(10,20,(a,b)->{
    return a+b;
    });

    invokeCul(10,20,(a,b)->a+b);

    }

    public static void invokeCul(int a,int b,Culator c){
    int sum =c.carulater(a,b);
    System.out.println(sum);


    }
    }


    最后要注意一下,使用Lambda必须具有接口,且接口中有且只有一个抽象方法
    使用Lambda必须具有上下文推断,也就是方法的参数或局部变量必须为Lambda对应的接口类型
    才能使用Lambda作为该接口的实例



    
    
    


  • 相关阅读:
    idea实现快捷批量修改替换
    接口自动化测试:利用环境变量管理测试环境的切换
    接口自动化测试:pytest自定义fixture传参request
    接口自动化测试:python连接mysql方法封装
    接口自动化测试:yaml文件中变量替换
    接口自动化测试:测试数据生成的一个小技巧
    接口自动化测试:抓包方式理解三次握手与四次挥手
    selenium相关:selenium grid的简单用法
    APP测试学习:弱网测试
    APP测试学习:耗电量测试
  • 原文地址:https://www.cnblogs.com/cndou/p/11221595.html
Copyright © 2011-2022 走看看