【JavaSE】Lambda

简介: 【JavaSE】Lambda

一、Lambda概述

1、函数式编程思想

拿数据做操作,有悖于面对对象操作

强调做什么,而不是过程

2、Lambda使用前提

有一个接口

接口只有一个抽象方法

二、Lambda标准格式

(形式参数) -> {代码块}

():形式参数

->:箭头

{}:代码块

三、Lambda使用

1、无参无返

public interface test1 {
   
    void domain();
}
public class doDemo1 {
   
    public static void main(String[] args) {
   
        doDoMain(() -> System.out.println("domain"));
    }

    public static void doDoMain(test1 t){
   
        t.domain();
    }
}
AI 代码解读

2、带参无返

public interface test2 {
   
    void domain(String s);
}
public class doDemo2 {
   
    public static void main(String[] args) {
   
        doDoMain((String s) -> {
   
            System.out.println(s);
        });
        doDoMain((s) -> System.out.println(s));
        doDoMain(s -> System.out.println(s));
    }

    public static void doDoMain(test2 t) {
   
        t.domain("domain");
    }
}
AI 代码解读

3、带参有返

public interface test3 {
   
    int add(int a, int b);
}
public class doDemo3 {
   
    public static void main(String[] args) {
   
        doAdd((int a, int b) -> {
   
            return a + b;
        });
        doAdd((a, b) -> a + b);
    }

    public static void doAdd(test3 t) {
   
        int sum = t.add(10, 20);
        System.out.println(sum);
    }
}
AI 代码解读

4、使用说明

1)Lambda的实现

先使用方法,后定义方法体

2)关于lambda的省略

  1. 形式参数类型可以省略,但是”不患寡而患不均“
  2. 形式参数如果只有一个可以省略小括号
  3. 代码块如果只有一条,可以省略大括号和分号(对于return语句,需要省略掉return)

3)上下文环境

必须有上下文环境,才能推导出lambda对应的接口

  1. 局部变量的赋值
  2. 调用方法的参数

四、Lambda与匿名内部类的区别

1、所需类型不同

匿名内部类:接口、抽象类、具体类

Lambda:接口

2、使用限制不同

匿名内部类:无抽象方法个数限制

Lambda:只能有一个抽象方法

3、实现原理不同

匿名内部类:产生一个class字节码文件

Lambda:字节码动态生成

目录
打赏
0
0
0
0
7
分享
相关文章
 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Span组件
 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Span组件
261 3
 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Span组件
阿里云AI剧本生成与动画创作解决方案深度评测
阿里云AI剧本动画全链路解决方案基于函数计算FC、百炼大模型和ComfyUI技术架构,实现从剧本生成到动画渲染的自动化流程。方案在电商广告、知识科普等快速批产场景表现出色,大幅缩短创作时间(如30秒动画从9.5小时减至16.1分钟)。然而,在强剧情连续性和物理规则方面存在不足,建议结合人工审核优化。测试显示其商用级成熟度,推荐采用“AI初稿-人工润色”模式。
533 138
阿里云AI剧本生成与动画创作解决方案深度评测
Linux命令`arch`详解
`arch`命令在Linux中用于显示系统CPU架构,如x86_64、ARM等。它在跨平台编程、软件包管理和系统故障排除时很有用。通过`arch`,用户能得知系统运行的架构,但注意这可能与物理CPU架构不同,尤其是在虚拟环境中。在某些系统中,`arch`可能是`uname`命令的别名。了解CPU架构对有效管理系统至关重要。
解决报错:import sun.misc.BASE64Decoder无法找到
解决报错:import sun.misc.BASE64Decoder无法找到
224 0
C#学习相关系列之数据类型---Diactionary字典的用法
C#学习相关系列之数据类型---Diactionary字典的用法
141 0
基于java+springboot的家教预约网站、家教信息管理系统
该系统是基于java+springboot开发的家教预约网站。是给师妹开发的实习作品。学习过程中,遇到问题可以在github咨询作者。
397 0
【数字设计】芯动科技|芯原科技_2023届_笔试面试题目分享
【数字设计】芯动科技|芯原科技_2023届_笔试面试题目分享
【数字设计】芯动科技|芯原科技_2023届_笔试面试题目分享