JDK8新特性之lambda表达式

大家好,这里是教授.F

目录

引入:

 什么情况下使用/使用前提:

标准格式:

 实现原理:

省略格式:


引入:

        lambda表达式就是简介的书写我们的匿名内部类。Lambda相当于对接口的抽象方法的重写。

 什么情况下使用/使用前提:

        1.方法的参数或局部类型必须为接口才能使用

        2.接口中有且仅有一个抽象方法

在jak8中:只有一个抽象方法的接口称为函数式接口,我们就可以使用lambda

@FunctionalInterface //这个注解是检测这个接口是不是只有一个抽象方法

标准格式:

(o1,o2) -> Integer.compare(o1,o2);
格式:
    -> :lambda操作符 或 箭头操作符
    ->左边:lambda形参列表(其实就是接口中的抽象方和形参列表)
    ->右边:lambda体(其实就是重写的抽象方法的方法体)

 实现原理:

lambda本质上就是对接口中方法的重写。

        匿名内部类在编译后会形成一个class文件。

        lambda在编译后并没有形成一个新类。

        lambda在运行时会生成一个内部类:

                1.在类中新增一个方法,这个方法的方法体就是lambda表达式中的代码

                2.还会形成匿名内部类,实现接口,重写抽象方法

                3.在重写方法中,会调用新生成的方法。

省略格式:

        1.小括号内参数类型可以省略

        2.如果小括号内有且仅有一个参数,则小括号可以省略

        3.如果大括号内有且仅有一个语句,可以同时省略大括号、return关键字及语句分号
 

Lambda和匿名内部类对比:

        1.所需的类型不同:

                匿名内部类需要哦的类型是类、抽象类、接口

                Lambda需要的类型必须是接口

        2.抽象方法的数量不一样:

                匿名内部类所需的接口中抽象方法的数量随意

                Lambda表达式所需的接口只能有一个抽象方法

        3.实现原理不同

                匿名内部类是在编译后形成一个class类

                Lambda表达式是在程序中运行形成动态生成class

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/660462.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

盐化行业数字化转型规划详细方案(124页PPT)

方案介绍: 本项目旨在通过引入先进的信息技术和数字化手段,对盐化行业的生产、管理、销售等各个环节进行全面优化和升级,实现生产效率提升、成本降低、产品质量提升、市场竞争力增强等目标。此外环保水平得到提升,降低企业的环保…

Opencv图像处理技术(图像轮廓)

1图像轮廓概念: 图像轮廓是指图像中连续的像素边界,这些边界通常代表了图像中的物体或者物体的边缘。在数字图像处理中,轮廓是由相同像素值组成的曲线,它们连接相同的颜色或灰度值,并且具有连续性。轮廓可以用来描述和…

滴滴一季度营收同比增长14.9%至491亿元 经调整EBITA盈利9亿元

【头部财经】5月29日,滴滴在其官网发布2024年一季度业绩报告。一季度滴滴实现总收入491亿元,同比增长14.9%;经调整EBITA(非公认会计准则口径)盈利9亿元。其中,中国出行一季度实现收入445亿元,同…

VSCode小技巧,忽略不想格式化的代码行

零.格式化工具文档 1 . Black Ignoring sections功能 2 . autopep8 disabling-line-by-line功能;;–line-range选项 3 . Prettier prettier-ignore功能(例:适用于JS的// prettier-ignore,适用于CSS的/* prettier-igno…

02_变量提升与函数提升及其优先级(JS高级)

目录 一、 变量提升与函数提升 为什么要进行变量提升和函数提升 1.1 变量提升 1.2 函数提升 1.3 变量提升与函数提升的优先级 二、执行上下文 三、执行上下文栈 四、习题 一、 变量提升与函数提升 为什么要进行变量提升和函数提升 JS引擎在读取js代码的过程中&#xf…

Dinky MySQLCDC 整库同步到 Doris

资源:flink 1.17.0、dinky 1.0.2、doris-2.0.1-rc04 问题:Cannot deserialize value of type int from String ,detailMessageunknowndatabases ,not a valid int value 2024-05-29 16:52:20.136 ERROR org.apache.doris.flink.…

OpenAI开始训练新的前沿模型——但GPT-5至少在90天内不会推出

ChatGPT 制造商 OpenAI 今早宣布,已开始训练其新的“前沿模型”,并成立了一个新的安全委员会,由现任董事会成员 Bret Taylor(OpenAI 董事会主席兼客户服务初创公司 Sierra AI 联合创始人、前谷歌地图负责人和前 Facebook 首席技术…

DNSlog环境搭建

阿里云域名公网VPS地址 购买阿里云域名后设置“自定义DNSHOST” DNS服务器填写ns1和ns2 如:ns1.aaa.com IP地址填写你的VPS地址 如:1.1.1.1 填写解析记录,一个A记录、一个NS记录 NS记录就是*.域名指向记录值ns1.域名 如:*.aaa…

JVM之加载class文件

1.JVM相关概念 官网地址:Java Platform Standard Edition 8 Documentation (oracle.com) jvm: java虚拟机,是java程序的运行环境(java二进制字节码的运行环境) jre:jvm基础类库(java.lang包下工具类、IO、集合类库、线程类等)组成了完整的运行环境 jdk:是由jvmj…

ElementUI之el-table标题列中显示el-tooltip

ElementUI之el-table标题列中显示el-tooltip 文章目录 ElementUI之el-table标题列中显示el-tooltip1. el-table标题列中显示el-tooltip2. 实现代码3. 展示效果 1. el-table标题列中显示el-tooltip 在el-table-column标签内添加具名插槽v-slot:header 在el-tooltip标签中使用具…

AI企业需要“联盟营销”?一文带你探索AI企业营销新玩法!

为什么联盟营销对AI业务有较大优势 联盟营销在电商领域、saas领域与其他产品领域同样有效。在AI业务中,它有效的原因与其他领域大不相同。 高好奇心和试用率 AI领域是创新的热点。它吸引了一群渴望探索和尝试每一项新技术的人群。这种蓬勃的好奇心为聪明的AI企业提…

NTP服务的DDoS攻击:原理和防御

NTP协议作为一种关键的互联网基础设施组件,旨在确保全球网络设备间的时钟同步,对于维护数据一致性和安全性至关重要。然而,其设计上的某些特性也为恶意行为者提供了发动大规模分布式拒绝服务(DDoS)攻击的机会。以下是NTP服务DDoS攻击及其防御…

34岁嵌入式开发工程师的出路在哪儿?

作为一个从事智能穿戴行业11年的资深从业者,您积累了丰富的技术和经验,IT行业内有很多发展机会和出路可以选择,以下是一些建议供参考:刚好我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到…

uniapp开发vue3监听右滑返回操作,返回到指定页面,解决边缘区域监听错误问题

想要在uniapp框架中监听左滑或者右滑手势,需要使用touchstart和touchend两个api,因为没有原生的左右滑监听api,所以我们只能依靠这两个api来获取滑动开始时候的x坐标和滑动结束后的x坐标做比对,右滑的话,结束时候的x坐…

gitea的git库备份与恢复

文章目录 gitea库的备份与恢复概述笔记实验环境更新git for windows更新 TortoiseGit备份已经存在的gitea的git库目录使用gitea本身来备份所有git库目录将gitea库恢复到新目录m1m2m3启动gitea - 此时已经恢复完成FETCH_HEAD 中有硬写位置再查一下app.ini, 是否改漏了。m1m2 总结…

pytorch深度学习-环境搭建-2

1.1下载cudnn,解压 1.2.找到本级cuda安装路径 1.3.刚才解压文件复制到cuda安装目录 2.1 安装pytouch conda install pytorch torchvision torchaudio pytorch-cuda12.1 -c pytorch -c nvidia 3.pytouch验证 我这儿是有问题的 PS C:\Users\Administrator\PycharmProjects\pyth…

BGP路由策略实验

一、实验拓扑 二、IP分配(骨干) R1: 0/0/0 15.0.0.1 24 0/0/1 18.0.0.2 24 0/0/2 19.0.0.1 24 R2: 0/0/0 16.0.0.1 24 0/0/1 15.0.0.2 24 R3: 0/0/0 17.0.0.2 24 0/0/1 18.0.0.1 24 R4: 0/0/0 16.0…

怎么将3D模型转换立面图---模大狮模型网

在建筑设计、室内设计以及产品建模等领域,经常需要将3D模型转换为立面图以进行展示、分析或交流。立面图能够清晰地呈现物体的外观和结构,是设计和施工中不可或缺的一部分。 一、导出3D模型 首先,需要将3D模型导出为CAD软件能够识别的格式。…

零基础学习图生图

目录 一、图生图是什么二、安装秋叶整合包2.1 秋叶包安装2.2 秋叶包拓展安装:2.3 ckpt配置:2.4 界面常用功能配置: 三、图生图基本功能展示3.1 图生图的界面3.2 重要的参数设置:3.3 涂鸦功能3.4 局部重绘功能3.5 涂鸦重绘3.6 上传…

microk8s 报错tls: failed to verify certificate: x509:

问题: ssh命令出现如下图所示 输入任何microk8s的容器命令几乎都是x509报错 kubectl get pods -ALL 原因: 证书过期 相关文档: MicroK8s - 服务和端口 Microk8S v1.24 - refresh-certs 似乎无法刷新证书 问题 #3241 规范/microk8s Git…