函数式接口之方法作为参数

news/2024/12/19 11:02:29/文章来源:https://www.cnblogs.com/zys2019/p/18616700

在现实开发中,肯定会遇到这样一种情况,有几个业务场景,里面的大部分业务逻辑都一样,只有某些逻辑不同,而这些不同的逻辑又依赖于前面的逻辑,你会选择写重复代码去实现还是选择抽取公共方法,对那些不同的逻辑做单独处理?是不是理解起来比较抽象,简单就一句话,怎么把方法作为参数调用另一个方法,那就需要使用函数式接口了,最合适的莫过于@FunctionalInterface注解 。

首先定义一个函数式接口,加上注解,定义一个方法和需要的参数

package com.zxh;@FunctionalInterface
public interface MyFunction {void execute(int a, int b, String message);
}

然后定义公共的方法,用于接收方法参数,来处理不同的逻辑

    public static void dealwithData(Integer a, Integer b, String s, MyFunction method) {Integer pageCount = 3;for (int i = 1; i <= pageCount; i++) {method.execute(a, b, s);}}

例如上述,定义了一个方法,模拟分页去执行传入的方法的业务逻辑

在需要调用的地方传参进行自定义的逻辑

    public static void add(Integer a, Integer b, String s){System.out.println(a + b + "-" + s);}public static void del(Integer a, Integer b, String s){System.out.println(a  + "-" + b + "-" + s);}public static void main(String[] args) {//加法的场景dealwithData(1, 2, "hello", (a, b, s) -> {add(a, b, s);});//拼接的场景dealwithData(1, 2, "hello", (a, b, s) -> {del(a, b, s);});}

上述定义了两个方法(方法内的业务逻辑不同),然后在main方法的不同场景中调用不同的方法

那么就可以很好的实现方法的封装,减少代码的冗余。

必须要有公共方法封装的思想,提高代码的健壮性

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

胖东来成功背后的管理智慧:零售行业如何借鉴?

零售行业通过选择合适的看板软件、实施看板管理以及持续优化与改进等步骤,可以实现管理优化和效率提升。这将有助于企业更好地应对市场竞争、提高客户满意度和实现可持续发展。胖东来创始人于东来在社交平台分享了胖东来商贸集团2024年的营业情况。数据显示,截至2024年11月26…

旅游公司各部门联动,何种办公软件能高效协同?

在旅游行业蓬勃发展且竞争日益激烈的当下,高效的团队协作与个人学习效率提升成为旅游公司脱颖而出的关键因素。尤其是对于 MBTI 类型中倾向于有序规划的 J 人而言,可视化的团队协作办公软件犹如得力助手,能够让复杂的旅游业务流程清晰呈现,促进信息的高效流通与任务的顺利推…

linux操作系统安装

1.centenos镜像文件下载 2.创建一个虚拟机 1)打开VMware软件,选择创建新的虚拟机,在弹出的虚拟机向导的窗口选择自定义配置,点击下一步;2)默认设置3)选择稍后安装系统4)客户机操作系统选择Linux,版本选择CentOS 7(64位)5)命名虚拟机,选择存储路径6)处理器配置根据…

如何在宝塔面板中检查和开启path_info支持?

在宝塔面板中,检查和开启path_info支持的步骤如下:登录宝塔面板:打开浏览器,输入宝塔面板的地址(例如:http://你的域名:8888),使用管理员账号登录。进入网站管理页面:在宝塔面板首页,找到你需要配置的网站,点击“设置”按钮。进入PHP设置:在网站设置页面中,找到“…

大模型平台汇总说明

国外大模型平台 Openapi Anthropic Meta google国内大模型平台 百度 文心一言厂商 模型地址优势百度 文心一言 https://yiyan.baidu.com/ 支持文生图支持联网支持图生文支持读取文档支持生成图表商业信息查询生成思维导图 本文来自博客园,作者:王竹笙,转载请注明原文链接:…

规划新一年,提升效率:跨年日程管理与计划软件的完美结合

一、跨年日程规划的挑战 跨年作为时间的节点,往往意味着新的开始。许多人在这一时期都会进行新一年的规划,制定目标、任务和行动计划。无论是个人的生活规划,还是团队或公司的年度战略,跨年日程规划面临的挑战主要包括:1.1 任务繁多,易遗漏 跨年日程通常包含从目标设定、…

Angular 打包 ng build 不压缩混淆

`ng build` 后,`js` 代码被压缩混淆了,好像不太利于学习,何解?ng build 后,js 代码被压缩混淆了,好像不太利于学习,何解?无解??? 非也,非也。 试试 ng build --help, 何如?可解,可解。 Angular 微微抬头,语重心长曰:“小伙子,运行这个命令 —— ng build -c …

Kafka Streams 在监控场景的应用与实践

介绍 Kafka Streams 的原理架构,常见配置以及在监控场景的应用。作者:来自 vivo 互联网服务器团队- Pang Haiyun介绍 Kafka Streams 的原理架构,常见配置以及在监控场景的应用。 一、背景 在当今大数据时代,实时数据处理变得越来越重要,而监控数据的实时性和可靠性是监控能…

让.NET应用支持Http/3,QUIC协议

1. 必备条件 1.1 .NET应用开启https Programe.cs中配置了https支持, var builder = WebApplication.CreateBuilder(args);builder.WebHost.ConfigureKestrel((context, options) => {options.ListenAnyIP(5001, listenOptions =>{listenOptions.Protocols = HttpProtoco…

NocoBase 本周更新汇总:优化移动端

本周更新包括:移动端交互优化,缺陷修复等。汇总一周产品更新日志,最新发布可以前往我们的博客查看。 NocoBase 目前更新包括的版本更新包括三个分支:main ,next和 develop。main :截止目前最稳定的版本,推荐安装此版本。 next:包含即将发布的新功能,经过初步测试的版本…

宝塔Windows面板的资源占用情况如何?

宝塔Windows面板的资源占用情况如下:内存:纯面板约占用系统300M左右的内存。这意味着在没有其他服务和应用程序的情况下,宝塔面板本身大约占用300M的内存。然而,实际使用中,服务器通常会运行其他服务和应用程序,因此建议至少4096M以上的内存,以确保系统的整体性能。 硬盘…

如何在易优EyouCms中启用产品模型?

在使用易优EyouCms时,产品模型是一个非常重要的功能,尤其对于需要展示和销售产品的网站来说。然而,默认情况下,产品模型可能不会出现在新建栏目的模型选项中。为了启用产品模型,您需要按照以下步骤操作:进入后台管理:打开浏览器,输入您的易优EyouCms后台管理地址,例如…