• lambda表达式


    lambda是什么:

    • lambda是Java8的重要新特征,使用 Lambda 表达式可以使代码变的更加简洁紧凑,同时lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。
    • 相较于Java7匿名内部类,lambda不仅仅是语法糖而已,经反编译后可知:匿名内部类会创建一个内部类对象,而lambda表达式会被封装为主类的私有方法。
    • lambda表达式会省略方法名或省略方法名与接口名(仅能取代函数接口:一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。),即:
    //此处省略Runable接口与run方法名称
    new
    Thread( () -> { System.out.print("Hello"); } ).start();

    语法特征:

    • (parameters) -> expression(parameters) ->{ statements; }
    • 以下是lambda表达式的重要特征:
    1. 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
    2. 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
    3. 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
    4. 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值,即:
    Function f1=(a)-> a.toString();
    //或
    Function f1=(a)-> {return a.toString();};
    • 类名::方法名

      注意是方法名哦,后面没有括号“()”。为啥不要括号,因为这样的是式子并不代表一定会调用这个方法。这种式子一般是用作Lambda表达式,Lambda有所谓懒加载嘛,不要括号就是说,看情况调用方法。

    参考:

    https://www.runoob.com/java/java8-functional-interfaces.html

    https://objcoding.com/2019/03/04/lambda/

    https://blog.csdn.net/lsmsrc/article/details/41747159

    后续:lambda与Collections、stream(待整理)

  • 相关阅读:
    Cookie操作
    C# 操作Cookie类
    面向对象之struct
    高薪程序员都避开了那些坑【安晓辉】
    [转]C#之反射
    [转]正则表达式相关:C# 抓取网页类(获取网页中所有信息)
    membership 在web.config中配置信息
    面向对象之virtual
    面向对象之多态
    JAVA面向对象 接口
  • 原文地址:https://www.cnblogs.com/jixiegongdi/p/14005802.html
Copyright © 2020-2023  润新知