liulisha丶 2023-03-25 14:34 采纳率: 16.7%
浏览 12

Java 根据两个变量值做不同业务处理的解决方案

定义两个变量a,b。a可取值为 1, 2, 3 ,b可取值为4, 5, 6

if(a = 1 && b = =4){
 handler1();
}

if(a =1 && b == 5){
handler2();
}

if(a =2 && b == 4){
handler3();
}

....

a ,b 类型不固定,也可为枚举

这种通过a,b 取不同值,做不同业务,除了用if 判断,有更好的方式么?

  • 写回答

3条回答 默认 最新

  • IT_service_mesh 2023-03-25 15:11
    关注

    参考GPT和自己的思路:你可以使用一个 Map 来存储不同组合的业务处理代码。具体实现方式如下所示:

    1. 定义一个 Map,key 为 a 和 b 的组合形成的字符串,value 为相应的业务处理代码。如下所示:
    Map<String, Runnable> handlerMap = new HashMap<>();
    handlerMap.put("1,4", () -> handler1());
    handlerMap.put("1,5", () -> handler2());
    handlerMap.put("2,4", () -> handler3());
    ...
    
    1. 使用 a 和 b 的值来拼接成一个 key,然后从 Map 中获取相应的业务处理代码并执行,如下所示:
    String key = a + "," + b;
    handlerMap.getOrDefault(key, () -> {}).run();
    

    这样可以避免大量的 if 判断,使代码更加清晰易读。不过需要注意的是,如果使用枚举类型作为 a 和 b 的类型,需要将枚举值拼接成字符串来作为 Map 的 key。

    评论

报告相同问题?

问题事件

  • 修改了问题 3月25日
  • 创建了问题 3月25日

悬赏问题

  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题