• lamada基本语法


    基本语法

    /**
      1) 声明: 即和λ表达式绑定的接口类型,例如Function<T, R>
      2) 参数: 包含在一对小括号中,参数类型和参数个数必须和函数式接口中的抽象方法的参数类型和参数个数且参数顺序一致。
      3) 操作符: ->
      4) 执行代码块: 包含在一对大括号中,出现在操作符的右侧。
    */
    
    
    Interface<T> in = (Type1 param1, Type2 param2, ..., TypeN paramN) 
    -> {
        statment1;
        statment2;
    //.............

        return statmentM;
      }

    1. 如果执行代码块里仅有一条语句,可省略大括号

          Stream<String> stream2 = Stream.of("l","s","j");
            stream2.forEach((String a) -> {
                System.out.println(a);
            });
            stream2.forEach((String a) -> System.out.println(a));  // 可以省略大括号

    2. 省略参数类型

      JVM可以根据上下文推断出参数类型。为什么可以推断出呢? 因为函数式接口的定义:该接口仅有一个非default、非static、非Object继承来的抽象方法,该抽象方法的参数类型决定了小括号里面的参数类型和顺序,当然JVM就可以推断出参数的类型。


    (param1,param2, ..., paramN) -> { statment1; statment2; //............. return statmentM; }
    stream2.forEach((a)-> System.out.println(a)); // 省略了参数类型,省略了大括号

    3. lamada表达式参数仅一个,可省略小括号

    param1 -> {
      statment1;
      statment2;
      //.............
      return statmentM;
    }

    例如:

    set.stream().map(x -> x.get());

    4. 如果函数式接口有返回值,切当执行代码块只有一句语句时,可省略return

      /**声明一个接口 */
        interface LambdaTest<T, R> {
            R test(T t, T t2);
        }
            LambdaTest<Integer, Integer> lambdaTest1 = (x, y) -> {
                return x + y;
            };
            LambdaTest<Integer, Integer> lambdaTest2 = (x, y) -> x + y;  // 这里省略return关键字
    
            System.out.println(lambdaTest1.test(1,2)); // 3
            System.out.println(lambdaTest2.test(1, 2)); // 3

    可以看出,当执行代码块里面仅有一句时,可省略return关键字。

    总的来说:

    • 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
    • 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
    • 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
    • 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值

    目录

      

  • 相关阅读:
    《结对-航空购票系统-测试过程》
    《结对-航空购票系统-开发过程》
    课后作业-阅读任务-阅读提问-2
    《1005-构建之法:现代软件工程-阅读笔记》
    《团队-记事本程序-代码设计规范》
    Python作业:jieba库
    Python第四周作业:青蛙跳台阶、欧式距离、验证码校验、大小写互换、凯撒加密、身份证号处理
    Python汉诺塔问题
    第四周(1):利用Python计算π的值,并显示进度条
    Python第二周(1):凯撒密码B,括号配对测试,字符串反码,计算矩形面积,快乐的数字
  • 原文地址:https://www.cnblogs.com/lioa/p/13489538.html
Copyright © 2020-2023  润新知