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

    一、概念

    1. 可以给Java变量赋"值",例如int i=1;

    2. 也可以把一个代码块(例如一个方法)赋给Java变量

    3. 这个代码块,即被赋值给一个变量的函数,就是一个lambda表达式

    4. 此时Java变量的类型是一个接口,而lambda表达式是这个接口的实现,即lambda表达式返回值是接口类型的

    二、函数式接口

    1. 概念:一个接口里只有一个方法需要被实现,如果有多个方法需要被实现,就变成了非函数接口

    2. 在接口上加上@FunctionalInterface,就可以保持函数式接口,无法在接口里添加其他需要被实现的方法

    三、示例

    InterfaceA a=(s)->System.out.println(s);
    函数式接口 变量 lambda表达式

    a.apply("aaa");

    四、使用

    1. 传统的Java对接口的实现,需要写一个类实现接口,并重写接口里的方法,lambda表达式一行代码就实现了

    2. 代替匿名内部类,例如Runnable接口

    3. 函数式接口

    a. Predicate<T> 做检查,返回boolean值

    b. Consumer<T>执行有参数的方法,无返回值

    c. Supplier<T>接口,无参有返回值

    d. Stream的filter可以与Predicate<T>配合使用

    e. Stream直接代替Consumer<T>

    g. 使用Optional<T>处理null,需要结合lambda表达式才能把null检查变得简单

    五、方法引用与构造器引用

    1. 可以用方法引用(Method Reference)代替lambda表达式

    2. Object::methodName

    3. Class::staticMethod

    参考:

    https://mp.weixin.qq.com/s/Ww17lhNowmMO9cGWHKqXfA

    https://mp.weixin.qq.com/s/SF9Tdg1eyARQpmHNc3_dbg

  • 相关阅读:
    8.02_python_lx_day14
    8.02_python_lx_day13<2>
    8.02_python_lx_day13<1>
    7.30_python_lx_day20
    7.29_python_lx_da19
    7.29_python_lx_day12
    Docker镜像
    Docker学习Ⅱ
    Docker学习Ⅰ
    2-3树的插入和删除原理
  • 原文地址:https://www.cnblogs.com/june0816/p/6803805.html
Copyright © 2011-2022 走看看