Java使用Map数据结构配合函数式接口存储方法引用

server/2024/9/25 16:13:52/

Java使用Map数据结构配合函数式接口存储方法引用

背景 需求中存在这样一直情况 一个国家下面有很多的州 每个州对应的计算日期方法是不同的 这个时候 就面临 可能会有很多if else 为了后期维护尽量还是不想采用这个方式,那么就可以使用策略模式 但是 使用策略带来的效果是 有很多个策略类 导致项目.class 剧增 本身只是一个处理时间的计算 后期改动也不大尽量还是想放到一个类中处理,统一维护 不用分散开,那么这个时候可以考虑使用map 去统一维护 但是要是实现 value 保存的是方法 那么就要使用 函数接口实现:

具体实现:

java">import java.util.HashMap;
import java.util.Map;
import java.util.function.Consumer;public class TestRegithMain {public static void main(String[] args) {TestRegithMain testRegithMain = new TestRegithMain();testRegithMain.execute(1);}private final Map<Integer, Consumer<TestRegithMain>> methods = new HashMap<>();public TestRegithMain() {methods.put(1, TestRegithMain::method1);methods.put(2, TestRegithMain::method2);methods.put(3, TestRegithMain::method3);}public void execute(int code) {Consumer<TestRegithMain> method = methods.get(code);if (method != null) {method.accept(this);} else {//  记录日志、发送警告或者抛出异常,具体取决于你的应用需求}}private void method3() {System.out.println("执行方法3");}private void method2() {System.out.println("执行方法2");}private void method1() {System.out.println("执行方法1");}}

这样就是能实现 根据 code 可以去使用对应的方法而不用去创建很多类 再去根据bean 去获取这样方便很多。


http://www.ppmy.cn/server/121901.html

相关文章

mxnet算子调用kernel示例(MINIST)

mxnet算子调用kernel示例(MINIST) 在使用 MXNet 执行 MNIST 任务时&#xff0c;每个步骤都会调用相应的算子&#xff0c;这些算子最终会调度到对应的 GPU kernel&#xff08;内核&#xff09;。MXNet 支持异步执行和自动微分&#xff0c;能够通过 GPU 的加速来提高深度学习任务…

UWA支持鸿蒙HarmonyOS NEXT

华为在开发者大会上&#xff0c;宣布了鸿蒙HarmonyOS NEXT将仅支持鸿蒙内核和鸿蒙系统的应用&#xff0c;不再兼容安卓应用&#xff0c;这意味着它将构建一个全新且完全独立的生态系统。 为此&#xff0c;UWA也将在最新版的UWA SDK v2.5.0中支持鸿蒙HarmonyOS NEXT&#xff0c…

ArcGIS Pro SDK (十五)共享

ArcGIS Pro SDK (十五)共享 文章目录 ArcGIS Pro SDK (十五)共享1 ArcGIS 项目管理器:获取当前活动门户2 ArcGIS 项目管理器:获取所有门户的列表3 ArcGIS 项目管理器:将门户添加到门户列表4 ArcGIS 项目管理器:获取门户并登录,将其设置为活动状态5 ArcGIS 程序管理器:…

【JAVA-数据结构】初识集合框架

时隔几个月&#xff0c;小主又回来了&#xff0c;近期我们来谈谈数据结构相关内容&#xff0c;这部分数据结构&#xff0c;我们将使用JAVA进行相关讲解&#xff0c;感兴趣的小伙伴持续关注&#xff0c;防止走丢。 1. 什么是集合框架 Java 集合框架 Java Collection Framework &…

CentOS8使用chrony同步网络时间

文章目录 引言I CentOS8使用chrony网络时间同步安装chrony配置间同步服务器地址检查本机的时区设置时区chronyc命令II windows网络时间同步2.1 修改同步服务器2.2 修改同步频率引言 应用场景: 获取服务器时间进行船舶在线率统计 dtos.forEach(item -> {if(item.getDwtime(…

Java面试篇基础部分- Java中的阻塞队列

首先队列是一种前进后出的操作结构,也就是说它只允许从队列前端进入,从队列后端退出。这个前端和后端看个人如何理解,也就是通常所说的入队和出队,队头和队尾。 阻塞队列和一般队列的不同就在于阻塞队列是可以阻塞的,这里所说的并不是说队列中间或者队头队尾被拦截了,而是…

UnLua扩展接口

一、在蓝图中创建接口 1、创建BlueprintInterface 2、声明接口函数 3、继承接口 注意&#xff0c;接口不需要绑定Lua&#xff0c;也没有Bind按钮 二、在Lua中实现接口函数 1、实现接口函数 BP_Player.lua function BP_Player_C:UpdateAiming(IsAiming)if IsAiming thensel…

获取douyin商品详情:API接口的力量

什么是DouYin商品详情API&#xff1f; douyin商品详情API是douyin开放平台提供的一项服务&#xff0c;允许开发者通过编程方式获取douyin商品的详细信息。这些信息通常包括商品的标题、价格、销量、描述、图片等。 API返回值说明 商品详情API返回的数据通常包括以下字段&…