• Lambda表达式


    Lambda表达式

    基本介绍

    • λ 在希腊字母表中排序第十一位的字母,英语名称为 Lambda

    • 避免匿名内部类定义过多

    • 其实质属于函数式编程的概念

    (params) -> expression [表达式]

    (params) -> statement [语句]

    (params) -> {statements}

    为什么要使用Lambda表达式

    • 避免匿名内部类定义过多

    • 可以让你的代码看起来更简洁

    • 去掉了一堆没有意义的代码,只留下了核心的逻辑

    函数式接口的定义

    • 任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口

    interface Runnable {

    public abstract void run();

    }

    • 对于函数式接口,我们可以通过Lambda表达式来创建该接口的对象

    1. package test.Demo19;
    2. /**
    3. * @author 程家亮
    4. * @version 1.0
    5. */
    6. public class TestLambda1 {
    7.    //1.静态内部类
    8.    static class Like2 implements ILike{
    9.        @Override
    10.        public void lambda() {
    11.            System.out.println("I like lambda2");
    12.       }
    13.   }
    14.    public static void main(String[] args) {
    15.        ILike like = new Like();
    16.        like.lambda();
    17.        //静态内部类
    18.        like = new Like2();
    19.        like.lambda();
    20.        //2.局部内部类
    21.        class Like3 implements ILike{
    22.            @Override
    23.            public void lambda() {
    24.                System.out.println("I like lambda3");
    25.           }
    26.       }
    27.        like = new Like3();
    28.        like.lambda();
    29.        //3.匿名内部类,没有类的名称,必须借助接口或者父类
    30.        like = new ILike() {
    31.            @Override
    32.            public void lambda() {
    33.                System.out.println("I like lambda4");
    34.           }
    35.       };
    36.        like.lambda();
    37.        //4.用lambda简化
    38.        like = () -> {
    39.            System.out.println("I like lambda5");
    40.       };
    41.        like.lambda();
    42.   }
    43. }
    44. //函数式接口
    45. interface ILike{
    46.    void lambda();
    47. }
    48. //实现类
    49. class Like implements ILike{
    50.    @Override
    51.    public void lambda() {
    52.        System.out.println("I like lambda1");
    53.   }
    54. }

    总结

    • lambda表达式只有一行代码的情况下才能去掉花括号简化成一行;如果有多行,那么就要用代码块包裹

    • 前提是接口为函数式接口

    • 多个参数也可以去掉参数类型,要去就都去掉,必须加上括号

    1. public class TestLambda2 {
    2.    public static void main(String[] args) {
    3.        //lambda表达式
    4.        ILove love1 = (int a) -> {
    5.            System.out.println("I love you--->"+a);
    6.       };
    7.        love1.love(520);
    8.        //简化1:参数类型
    9.        ILove love2 = (a) -> {
    10.            System.out.println("I love you--->"+a);
    11.       };
    12.        love2.love(1314);
    13.        //简化2:简化括号
    14.        ILove love3 = a -> {
    15.            System.out.println("I love you--->"+a);
    16.       };
    17.        love3.love(666);
    18.        //简化3:简化花括号
    19.        ILove love4 = a -> System.out.println("I love you--->"+a);
    20.        love4.love(888);
    21.   }
    22. }
    23. interface ILove {
    24.    void love(int a);
    25. }
    26. ​​​​​​​

     

  • 相关阅读:
    LangChain入门学习笔记(五)—— Model I/O之Chat Models
    Pycharm-community-2021版安装和配置
    LeetCode_快速幂_递归_中等_50.Pow(x, n)
    Windows 事件查看器记录到 MYSQL
    P5143 攀爬者(快速排序)
    让人获益匪浅的学习网站
    C语言——自定义类型之枚举
    【接口测试】微信小程序接口自动化的实现方案
    【重拾C语言】七、指针(二)指针与数组(用指针标识数组、多维数组与指针、数组指针与指针数组)
    Spring
  • 原文地址:https://blog.csdn.net/weixin_52385232/article/details/125613752