Lambda 表达式简单演化(原始的方法调用,一步步简化成 lambda 表达式的过程)

目录

  • Lambda 表达式简单演化
    • 原始的方法调用,一步步简化成 lambda 表达式的过程
      • 原始接口方法没有参数的演示—示例 1
        • 具体代码
      • 原始接口方法携带参数的演示—示例 2
        • 具体方法

Lambda 表达式简单演化


函数式接口的定义:

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

在这里插入图片描述

2、对于函数式接口,我们可以通过 lambda 表达式来创建该接口的对象。


原始的方法调用,一步步简化成 lambda 表达式的过程


原始接口方法没有参数的演示—示例 1

在这里插入图片描述


具体代码
//原始的方法调用,一步步简化成 lambda 表达式的过程
public class TestLambda01 {

    //4、第一次优化-->静态内部类(把实现类放到静态内部类里面即可)=========类名是Like2
    static class Like2 implements ILike{
        @Override
        public void studyLambda() {
            System.err.println("复习lambda-----静态内部类---02");
        }
    }



    
    public static void main(String[] args) {
    	//3、最原始的调用一个实现类的方法========================
        Like like = new Like();
        like.studyLambda();



        //4、-----测试----------========================
        Like2 like2 = new Like2();
        like2.studyLambda();



        //5、第二次优化-----> 局部内部类=====================类名是Like3
        class Like3 implements ILike{
            @Override
            public void studyLambda() {
                System.err.println("复习lambda-----局部内部类---03");
            }
        }

        Like3 like3 = new Like3();
        like3.studyLambda();
        

        //6、第三次优化--->匿名内部类,没有类的名称,必须借助接口或者父类-----没有类名=======
        //iLike 不是类名,而是一个对象的引用变量名
        ILike iLike = new ILike() {
            @Override
            public void studyLambda() {
                System.err.println("复习lambda-----匿名内部类---04");
            }
        };

        iLike.studyLambda();



        //7、第四次优化---> 用 Lambda 简化
        iLike = () -> {
            System.err.println("复习lambda-----Lambda 简化版本---05");
        };

        iLike.studyLambda();


    }
}

//1、定义一个函数式接口
interface ILike {
    void studyLambda();
}

//2、实现类
class Like implements ILike{
    @Override
    public void studyLambda() {
        System.err.println("复习lambda-----原始实现类里面的方法---01");
    }
}

原始接口方法携带参数的演示—示例 2

和上面的演示一样,只不过这次方法加了参数而已

在这里插入图片描述


具体方法

//原始的方法调用,一步步简化成 lambda 表达式的过程
public class TestLambda02 {

    //1、第一次优化-->静态内部类(把实现类放到静态内部类里面即可)=========类名是 Love01
    static class Love01 implements ILove {
        //实现接口方法
        @Override
        public void love(int a,int b) {
            System.err.println("实现接口的love方法------>" + a + " - " + b);
        }
    }

    public static void main(String[] args) {

        //最原始的调用一个实现类的方法========================
        Love love = new Love();
        love.love(0,0);

        Love01 love01 = new Love01();
        love01.love(22,222);


        //2、匿名内部类--- ilove 不是类名,而是一个对象的引用变量名
        ILove ilove = new ILove(){
            @Override
            public void love(int a, int b) {
                System.err.println("实现接口的love方法------>" + a + " - " + b);
            }
        };
        ilove.love(66,666);


        //直接简化成 lambda

        ilove = (a,b)->{
            System.err.println("简化成 lambda 表达式------>" + a + " - " + b);
        };
        ilove.love(99,999);
        
    }
}

//接口
interface ILove {
    void love(int a,int b);
}

//实现类
class Love implements ILove {
    //实现接口方法
    @Override
    public void love(int a,int b) {
        System.err.println("实现接口的love方法------> " + a + " - " + b);
    }
}

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

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

相关文章

Springboot 测试模块 + 注入bean失败

1.添加依赖 <dependencies><!-- ... 其他依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency> </depende…

Chatgpt掘金之旅—有爱AI商业实战篇|在线辅导业务|(十一)

演示站点&#xff1a; https://ai.uaai.cn 对话模块 官方论坛&#xff1a; www.jingyuai.com 京娱AI 一、AI技术创业在线辅导业务有哪些机会&#xff1f; 人工智能&#xff08;AI&#xff09;技术作为当今科技创新的前沿领域&#xff0c;为创业者提供了广阔的机会和挑战。随着…

【LeetCode】修炼之路-0002-Add Two Numbers(两数相加)【python】【中等】

题目 You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order, and each of their nodes contains a single digit. Add the two numbers and return the sum as a linked list. You may assume the two…

使用MobaXterm/winTerm之类的工具连接虚拟机时报错Permission denied或者Access denied的解决办法

一、虚拟机设置&#xff1a; 1.将点击【编辑】---> 【虚拟网络编辑器】 2.添加VMnet6 1&#xff09;点击【DHCP设置】--->添加网络--->选中【仅主机模式】【将主机虚拟适配器连接到此网络】 2&#xff09;子网ip写“192.168.66.0” 3&#xff09;点击右下角【应用…

Tomcat项目部署spring mvc项目,压测出现的问题

Tomcat项目部署spring mvc项目&#xff0c;压测出现的问题 项目部署&#xff1a;docker部署时候设置的内存是80G&#xff0c;JVM堆内存的初始堆和最大堆设置的内存都是64G 1、压测的时候&#xff0c;并发1000&#xff0c;循环1次 日志显示&#xff1a;堆内存溢出 2、排查出…

2022年蓝桥杯省赛——ASC

目录 题目链接&#xff1a;1.ASC - 蓝桥云课 (lanqiao.cn) 题目描述 思路 代码实现 题目链接&#xff1a;1.ASC - 蓝桥云课 (lanqiao.cn) 题目描述 这是一道填空题。 已知大写字母A的ASCLL码为65&#xff0c;请问大写字母L的ASCLL码是多少。 对&#xff0c;呃&#xff0c…

创新入门|营销中的视频内容:不可或缺的策略

视频在营销中日益重要。你是否也发现,视频内容最近似乎无处不在?它占据着社交媒体的推文、网站首页,甚至电子邮件中的位置。事实上,并不是你一个人有这样的感受。在过去十年中,视频作为一种营销手段日益成熟和强大。这是因为,人类天生就是视觉动物。我们大脑处理视觉信息的速度…

II2C协议+Oled屏幕ssd1306

IIC协议 IIC协议概述 IIC全称Inter-Integrated Circuit (集成电路总线)是由PHILIPS公司在80年代开发的两线式串行总线&#xff0c;用于连接微控制器及其外围设备。IIC属于半双工同步通信方式。 特点 简单性和有效性 由于接口直接在组件之上&#xff0c;因此IIC总线占用的空间非…

公开课学习——JVM虚拟机面试核心点与性能优化点

文章目录 jdk的体系结构图Java语言的跨平台的特性&#xff0c;怎么实现的&#xff1f;jvm内部组成呢&#xff1f;pc的值怎么变得&#xff1f;main方法的栈帧有一点点区别&#xff0c;Math()是new出来的&#xff0c;放在堆区&#xff0c;这个堆区的math和我们栈帧中的局部变量表…

B端:权限管理,远非增删改查审,一文告诉你细节。

增删改查审是B系统权限的常用功能&#xff0c;但绝非是全部功能&#xff0c;权限管理从属于用户管理体系&#xff0c;本文就详细分享权限管理都有啥&#xff0c;该如何设计。 一、什么是权限管理 B端的权限管理是指针对企业内部员工或合作伙伴的权限控制和管理。这包括对员工…

HarmonyOS 应用开发-使用colorPicker实现背景跟随主题颜色转换

介绍 本示例介绍使用image库以及effectKit库中的colorPicker对目标图片进行取色&#xff0c;将获取的颜色作为背景渐变色&#xff0c;通过swiper组件对图片进行轮播&#xff0c; 效果图预览 使用说明 直接进入页面&#xff0c;对图片进行左右滑动&#xff0c;或者等待几秒&a…

YOLOv5标签值含义根据标签将检测框色块替换(马赛克)

以一个检测人脸的图片为例&#xff1a; 检测后生成的标签txt如下&#xff0c; 此时&#xff0c;如何根据标签值将检测到的人脸同色块替换呢&#xff1f; 关键是获取检测框的左上角坐标和右下角坐标。 img Image.open(D:/PythonWokspace/JINX/datasets_transform/dataset/im…

MySQL-7.mysql约束

约束用于确保数据库中的数据满足特定的商业规则。 MySQL约束包含五种&#xff1a;not null、unique、primary key、foreign key、check 7.1 primary key 主键 字段名 字段类型 primary key 用于唯一的标识表的行数据&#xff0c;当定义主键约束后&#xff0c;该列不能重复。 pr…

赛氪网成为中国翻译协会理事单位

环球赛乐(北京)科技有限公司&#xff08;赛氪网&#xff09;正式成为中国翻译协会理事单位&#xff01; 中国翻译协会&#xff0c;简称TAC&#xff0c;自1982年成立以来&#xff0c;始终致力于推动全国翻译事业的发展。作为一个由翻译工作相关的机关、企事业单位、社会团体及个…

第十课 Excel

最上方标题栏&#xff1a; 显示共工作薄名称&#xff0c;如果显示兼容模式是没有办法使用高级功能的。分辨高版本和低版本可以通过后缀名进行分辨&#xff1b;显示xlsx就是高版本工作薄&#xff0c;如果显示xls的话就是低版本工作薄了。如果同事老板都使用的是低版本的话我们发…

单点登录系统设计

一、介绍 token鉴权最佳的实践场景就是在单点登录系统上。 在企业发展初期&#xff0c;使用的后台管理系统还比较少&#xff0c;一个或者两个。 以电商系统为例&#xff0c;在起步阶段&#xff0c;可能只有一个商城下单系统和一个后端管理产品和库存的系统。 随着业务量越来…

openGauss学习笔记-255 openGauss性能调优-使用Plan Hint进行调优-Hint的错误、冲突及告警

文章目录 openGauss学习笔记-255 openGauss性能调优-使用Plan Hint进行调优-Hint的错误、冲突及告警 openGauss学习笔记-255 openGauss性能调优-使用Plan Hint进行调优-Hint的错误、冲突及告警 Plan Hint的结果会体现在计划的变化上&#xff0c;可以通过explain来查看变化。 …

transformer上手(1) —— transformer介绍

1 起源与发展 2017 年 Google 在《Attention Is All You Need》中提出了 Transformer 结构用于序列标注&#xff0c;在翻译任务上超过了之前最优秀的循环神经网络模型&#xff1b;与此同时&#xff0c;Fast AI 在《Universal Language Model Fine-tuning for Text Classificat…

MQ的延迟队列

1&#xff0c;场景 1.定时发布文章 2.秒杀之后&#xff0c;给30分钟时间进行支付&#xff0c;如果30分钟后&#xff0c;没有支付&#xff0c;订单取消。 3.预约餐厅&#xff0c;提前半个小时发短信通知用户。 A -> 13:00 17:00 16:30 延迟时间&#xff1a; 7*30 * 60 * …

【STL】顺序容器与容器适配器

文章目录 1顺序容器概述1.1array1.2forward_list1.3deque 2.如何确定使用哪种顺序容器呢&#xff1f;3.容器适配器的概念4.如何定义适配器呢&#xff1f; 1顺序容器概述 给出以下顺序容器表&#xff1a; 顺序容器类型作用vector可变大小的数组&#xff0c;支持快速访问&#…
最新文章