zoukankan      html  css  js  c++  java
  • Lambda表达式

    Lambda表达式概念

    Lambda表达式,从本质来讲,是一个匿名函数。可以使用这个匿名函数,实现接口中的方法。

    函数式接口

    一个接口中,要求实现类必须实现的抽象方法,有且只有一个。

    interface Test() {
        void test();
        default void test() {} //default方法子类不是必须实现的
        String toString();  //toString方法,是Object类中定义的方法。实现类在实现接口时,toString可以不重写。
    }
    

    @FunctionalInterface

    用在接口之前,判断这个接口是否是一个函数式接口。

    Lambda表达式的语法

    Lambda表达式,本质上就是一个匿名函数。因此写lambda表达式时,不需要关心方法名是什么。

    参数列表 和 方法体

    lambda表达式的基础语法:

    (参数) -> {
        方法体
    };
    

    参数部分:方法的参数列表,要求和实现的接口中的方法参数部分一致,包括参数的数量和类型
    方法体部分:方法的实现部分,如果接口中定义的方法有返回值,则在实现的时候,注意返回值的返回
    ->:分隔参数部分和方法体部分。

    Lambda表达式语法精简

    参数部分精简

    • 参数类型:参数的类型可以省略(要省略,每个参数的类型都必须省略)
    • 参数的小括号:只有当参数的数量是一个时;省略掉小括号的同时,必须要省略参数的类型

    方法体部分精简

    • 方法体大括号:当一个方法体重的逻辑,有且只有一句的情况下,大括号可以省略
    • return的精简:如果一个方法中唯一的一条语句是一个返回语句,此时在省略掉大括号的同时,也必须省略掉return
    //        SingleReturnSigleParameter lambda1 = (a) -> {
    //            return a*a;
    //        };
            SingleReturnSigleParameter lambda1 = a -> a*a;
    
    都说酒是陈的香。
  • 相关阅读:
    Robin Hood CodeForces
    Arthur and Questions CodeForces
    AC日记——过河卒 洛谷 1002
    加密(模拟)
    AC日记——codevs 1086 栈 (卡特兰数)
    AC日记——搞笑世界杯 codevs 1060(dp)
    AC日记—— codevs 1031 质数环(搜索)
    AC日记——产生数 codevs 1009 (弗洛伊德)(组合数学)
    AC日记——阶乘之和 洛谷 P1009(高精度)
    AC日记——逃跑的拉尔夫 codevs 1026 (搜索)
  • 原文地址:https://www.cnblogs.com/yihangjou/p/13543899.html
Copyright © 2011-2022 走看看