java Lambda表达式 省略模式写法

news2024/11/21 2:28:31

我们先来看一个普通的Lambda表达式

我们创建一个包 下面创建一个接口 testInterface

参考代码如下

public interface testInterface {
    int eat(int max,int min);
}

text 测试类 参考代码如下

public class text {
    public static void main(String args[]) {
        newTestInterface((int max,int min)-> {
            return (max+min);
        });
    }
    public static void newTestInterface(testInterface test){
        System.out.println(test.eat(12,5));
    }
}

这里 我们接口定义了一个抽象方法 eat 他接收两个int类型的变量 返回一个int类型的值

然后 我们在测试类中定义方法newTestInterface 接收一个testInterface 对象
然后 我们通过调用 newTestInterface 利用Lambda表达式 简写了一个内部实现 将eat实现为返回两个值相加
newTestInterface的方法体中 输出了eat获取到的返回值

然后 我们运行结果如下
在这里插入图片描述
没有任何问题 但这里 我们可以省略一些写法

例如 参数的类型

我们将测试类的main 更改成这样

 public static void main(String args[]) {
      newTestInterface((max,min)-> {
         return (max+min);
     });
 }

运行之后 你会发现一切正常 说明Lambda表达式中 参数类型是可以省略的

但是 这里有个规定 要么都省了 要么都省略 就好像 你一个写了类型 一个又没写 那就报错了 开发工具不是菜市场 不支持你买半只

除了参数 参数外的括号在单个参数情况下也可以省略

我们整体代码修改一下

testInterface 接口 修改如下

public interface testInterface {
    int eat(int min);
}

测试类代码修改如下

public class text {
    public static void main(String args[]) {
        newTestInterface(min-> {
            return min;
        });
    }
    public static void newTestInterface(testInterface test){
        System.out.println(test.eat(5));
    }
}

这次 我们的main方法中的表达式 参数外面的包裹括号 显然就没了 这是在只有一个参数的情况下 可以不写这对小括号 多个参数 还是要用它的

然后 就是 如果代码块中 只有一行代码 可以省略大括号和分号

我们再将整体代码修改如下
testInterface接口

public interface testInterface {
    void eat(int min);
}

测试类 代码如下

public static void main(String args[]) {
   newTestInterface(min-> System.out.println(min));
 }
 public static void newTestInterface(testInterface test){
     test.eat(5);
 }

这里可以明显看到 我们的Lambda中去掉了方法体上的大括号

但这里可以注意到 我是特意将方法改成没有返回值的了
因为你一行代码上用 return返回 是会报错的

但其实 有return也可以这样写 return 一起省略就好了

我们将代码整体修改如下
testInterface接口

public interface testInterface {
    int eat(int min);
}

text 测试类 参考代码如下

public class text {
    public static void main(String args[]) {
        newTestInterface(min-> min);
    }
    public static void newTestInterface(testInterface test){
        System.out.println(test.eat(5));
    }
}

这里 就是我们之前的代码 返回和大括号一起去掉 就可以了
运行结果如下
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

夺冠热度空前,梅西Instagram粉丝破4亿,跨境卖家如何借这股东风?

阿根廷队世界杯夺冠,35岁的梅西终于实现了职业生涯大满贯,全世界球迷都在为梅西欢呼。梅西夺冠的热度席卷全球,当前其Instagram账号的粉丝就突破了4亿,成为世界上第二个Instagram粉丝超4亿的人。 梅西夺冠当日在Instagram上的发帖…

易观千帆 | 2022年11月银行APP月活跃用户规模盘点

易观分析:11月手机银行服务应用活跃人数52639.05万,环比增长0.68%;排在前三的手机银行APP仍然为中国工商银行、中国农业银行、中国建设银行。 11月城商行手机银行服务应用活跃人数3730.98万,环比增长4.64%,从月活表现来…

Spring Boot 实现 SSE 服务端推送事件

源码地址 关于 SSE SSE 全程 Server Send Event,是 HTTP 协议中的一种,Content-Type 为 text/event-stream,是服务端主动向前端推送数据。类似于 WebSocket。 SSE 优势我们可以划分为两个: 长链接服务端能主动向客户端推送数据…

想要精通算法和SQL的成长之路 - 编辑距离

想要精通算法和SQL的成长之路 - 编辑距离前言一. 编辑距离1.1 定义动态规划数组1.2 定义动态规划方程1.3 定义数组的初始化1.4 最终答案前言 想要精通算法和SQL的成长之路 - 系列导航 一. 编辑距离 原题链接 给你两个单词 word1 和 word2, 请返回将 word1 转换成 …

DataFactory根据字段类型在mysql插入数据

目录 插入Varchar类型数据 场景一:主键使用uuid 场景二:从外部导入数据 场景三:使用组合方式 插入data类型日期数据 插入Varchar类型数据 insert value from an data table :表示可以通过外部数据创建数据表插入字符串值 i…

实验二B 图像的空域与频域滤波(源代码一站式复制粘贴)

实验二B 图像的空域与频域滤波一、实验目的二、实验原理三、实验内容与要求四、实验的具体实现一、实验目的 1.掌握图像滤波的基本定义及目的。 2.理解空间域滤波的基本原理及方法。 3.掌握进行图像的空域滤波的方法。 4.掌握傅里叶变换及逆变换的基本原理方法。 5.理解频域滤…

算法刷题打卡第52天:排序数组---桶排序

排序数组 难度:中等 给你一个整数数组 nums,请你将该数组升序排列。 示例 1: 输入:nums [5,2,3,1] 输出:[1,2,3,5]示例 2: 输入:nums [5,1,1,2,0,0] 输出:[0,0,1,1,2,5]桶排序…

2022 CSDN 客服年终总结

hello,大家好,这里是《听用户心声,解用户之需》之 2022 年终总结篇。 秉承“用户至上”的服务理念,为了给用户提供极致的服务体验而时刻努力着,2022年,在大家的一致努力下,究竟有何成效呢&#…

SpringBoot1:helloword、导入依赖、配置项设置,打包方法、lombok、dev-tools、Spring Initailizr、常见注解

1.简介 简化Spring开发的一个框架。对整个Spring技术栈的大整合 J2EE企业级开发的一站式解决方案。 2.微服务 一个应用应该是一组小型服务,可以通过HTTP的方式来进行互通 每一个功能元素都是可独立替换,和独立升级的软件单元。 3.HelloWord 功能&am…

Stm32标准库函数5——OV2640 PA0-7 F103C8T6 4500000 联合VB 高分辨率

stm32f103c8t6串口发送 OV2640的图像,分辨率可选。网络上资料大部分是低分辨率的,这个可以做高分辨率 完整工程打包,包含VB串口显示界面: https://download.csdn.net/download/fengyuzhe13/87327054https://download.csdn.net/do…

【经典问题:HanoiTower(汉诺塔)】

🎁HanoiTower🎅HanoiTower问题描述🎅🎅模拟推导🎅🎅🎅问题的两种形式🎄求解移动总次数🎄🎄打印详细的移动过程🎅HanoiTower问题描述 汉诺塔问题&a…

基于HMM模型实现中文分词

任务描述:在理解中文文本的语义时需要进行分词处理,分词算法包括字符串匹配算法,基于统计的机器学习算法两大类。本案例在前文将说明常用分词库及其简单应用,之后会通过中文分词的例子介绍和实现一个基于统计的中文分词方法——HMM模型,该模型能很好地处理歧义和未登录词问…

[含文档+源码等]基于SSM实现的宿舍公共财产管理系统|寝室

博主介绍:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 项目名称 [含文档源码等]基于SSM实现的宿舍公共财产管理系统|寝室 演示视频 [含文档源码等]基于SSM实现的宿舍公共财产管理系统|寝室_哔哩哔哩_bilibili 系统介…

经济低迷形势下,如何降低软件开发成本?

1、选对开发方法 过程决定结果。方法错了,再有经验的人,结果也不会好。例如,软件开发方法从70年代的瀑布,一步步从迭代、快速原型等进化到现在的敏捷、规模化敏捷、DevOps等。统计数字显示,使用敏捷方法,平…

Excel中实现时间相减,得到间隔时间(年月日时分秒)

一、年月日之差 表中有开始日期和结束日期,我们在D3单元格中输入“C3-B3” 于是,得到下面的结果 很显然,结果并不是我们想要的。说明这种方法不行,为了得到两个日期之间的时间间隔,需要用到DATEDIF函数。先来说下DATED…

我国融资性担保行业整体呈减量提质趋势 国家“出手”解决行业痛点

根据观研报告网发布的《中国融资性担保行业发展趋势分析与投资前景预测报告(2022-2029年)》显示,融资性担保行业是指担保人与银行业金融机构等债权人约定,当被担保人不履行对债权人负有的融资性债务时,由担保人依法承担…

Go:使用 go-micro 构建微服务(一)

一、微服务 什么是微服务(microservice)?这是企业界正在向计算界提出的问题。一个产品的可持续性取决于它的可修改程度。 大型产品如果不能正常维护,就需要在某个时间点停机维护。而微服务架构用细化的服务取代了传统的单体服务…

语音识别芯片LD3320介绍再续

语音识别芯片LD3320驱动程序 1、芯片复位 复位就是对LD3320芯片的第47腿(RSTB*)发送低电平,然后需要对片选CS做一次拉低→拉 高的操作,以激活内部DSP。按照以下顺序: void LD_reset() { RSTB1;delay(1);RSTB0;delay…

TencentOS 3.1下安装zabbix 5.0.30

TencentOS是使用官方镜像文件安装的虚拟机。 虚拟机为virtualBox 6.1 zabbix 使用zabbix官方安装包编译安装。 下载地址: Download Zabbix sources zabbix软件包解包,本次安装解包在/opt下 zabbix需要nginx、php、mysql等软件支持,因此先安装它们。 安装mysql如下: yu…

Usaco Training刷怪旅 第二层第二题:Transformations

usaco training 关注我持续更新usaco training A square pattern of size N x N (1 < N < 10) black and white square tiles is transformed into another square pattern. Write a program that will recognize the minimum transformation that has been applied to t…